我正在尝试使用下面的小脚本在一个频道上发送熊猫数据:
import requests
URL = 'XXXXXX'
response = requests.post(
URL, data={dataframe}
)但是当我这样做时,我会收到以下错误消息:'DataFrame' objects are mutable, thus they cannot be hashed!我还试着把它作为json发送,但是对于用户来说,它是不可读的。知道怎么做好吗?谢谢!
我的数据显示如下:
Bot instance Current Potential profit Potential Profit 24h ago Change last 24h Volume 24h Volume Market
0 Biki - TECUSDT 21.69386074 USDT 21.60458081 USDT 0.08927993 USDT 0.84554375 USDT 28577.2565559176490500
1 Binance - XEMBTC -3.55974813 BTC -3.55514961 BTC -0.00459852 BTC 11.31867593 BTC 924.7716585800000000
2 Binance - XEM/ETH -15.38320177 ETH -15.32533185 ETH -0.05786992 ETH 35.44241506 ETH 1273.2456803600000000
3 bitfinex ant/btc 1.64774952 BTC 1.65615563 BTC -0.00840611 BTC 0.01056552 BTC 5.2507294117379079
4 Bitfinex ANT/ETH -15.93635190 ETH -15.60342681 ETH -0.33292509 ETH 0.00000000 ETH 99.3832923859608600当我把它当作json来松弛时,它看起来是这样的:
{"Bot实例“:{”0“:”Biki- TECUSDT“、"1":"Binance - XEMBTC”、"2":"Binance - XEM/ETH“、"3":"bitfinex ant/btc”、"4":"Bitfinex ANT/ETH“、"5":"Bitfinex ANT/USD”、"6":"Bitfinex /BTC“、"7":"Bitfinex ODE/美元”、"8":"Bitfinex -RIFBTC“、"9":"Bitfinex RIFBTC","10":"Bitfinex -VLD/美元“,"11":"Bittrex ANT/BTC","12":"Bittrex ANT/ETH","13":"Bittrex - GBYTEBTC","14":"Bitvavo - ANT/EUR","15":"Coinall - RIFBTC","16":"Coindeal PHT/ETH","17":"Coinmetro - PRQEUR","18":"Hitbtc ANTBTC","19":"Hitbtc - PLBTBTC",”20“:”BTC ETH“,"21":"Hitbtc - PLR/BTC","22":"Hitbtc - PLR/ETH","23":"Hitbtc - PLR/USDT","24":"Kucoin - RIFBTC","25":"LGO - LGOUSD",“26”:“液态-RIF美元”,"27":"Livecoin - PLBTBTC","28":"Livecoin -PLBTBTC“,"29":"Livecoin - PLBTUSD","30":"Nash - ANTBTC","31":"Poloniex - PRQUSDT","32":"P2PB2B - ANTBTC"},“当前潜在利润”:{“0”:“21.69386074 USDT","1":"-3.55974813 BTC","2":"-15.38320177 ETH","3":"1.64774952 BTC","4":"-15.93635190 ETH","5":"-22533.4891602美元”,"6":null,"7":"-163.0524“
对于用户来说是不可读的
发布于 2020-09-10 18:42:53
您可以使用pandas.DataFrame.to_markdown将数据编码为字符串。这应该在Slack中是可读的。
response = requests.post(
URL,
data={'<payload_key>': dataframe.to_markdown()}
)to_markdown给出的字符串如下:
| | index | Bot instance | Current Potential profit | Potential Profit 24h ago | Change last 24h Volume | 24h Volume Market |
|---:|:------------------|:-----------------|:---------------------------|:---------------------------|:-------------------------|---------------------:|
| 0 | Biki - TECUSDT | 21.69386074 USDT | 21.60458081 USDT | 0.08927993 USDT | 0.84554375 USDT | 28577.3 |
| 1 | Binance - XEMBTC | -3.55974813 BTC | -3.55514961 BTC | -0.00459852 BTC | 11.31867593 BTC | 924.772 |
| 2 | Binance - XEM/ETH | -15.38320177 ETH | -15.32533185 ETH | -0.05786992 ETH | 35.44241506 ETH | 1273.25 |
| 3 | bitfinex ant/btc | 1.64774952 BTC | 1.65615563 BTC | -0.00840611 BTC | 0.01056552 BTC | 5.25073 |
| 4 | Bitfinex ANT/ETH | -15.93635190 ETH | -15.60342681 ETH | -0.33292509 ETH | 0.00000000 ETH | 99.3833 |发布于 2020-09-08 01:38:15
你的“数据”应该是一个编码的字符串。
message = 'string'
data = message.encode('utf-8')发布于 2020-09-15 14:01:11
在测试之后,这个方法应该可以工作:
用于私有通道:确保您的bot能够访问您要发送消息的通道。如果它们不在其中,将机器人添加到通道中。
import pandas
import requests
from pandas import DataFrame
from io import StringIO
csv_string = StringIO("""Bot instance,Current,Potential profit,Potential Profit 24h ago,Change last 24h Volume, 24h Volume Market
Biki - TECUSDT,21.69386074 USDT,21.60458081 USDT,0.08927993 USDT,0.84554375 USDT,28577.2565559176490500
Binance - XEMBTC, -3.55974813 BTC,-3.55514961 BTC,-0.00459852 BTC,11.31867593 BTC,924.7716585800000000
Binance - XEM/ETH,-15.38320177 ETH, -15.32533185 ETH,-0.05786992 ETH,35.44241506 ETH,1273.2456803600000000
bitfinex ant/btc, 1.64774952 BTC,1.65615563 BTC,-0.00840611 BTC,0.01056552 BTC,5.2507294117379079
Bitfinex ANT/ETH, -15.93635190 ETH,-15.60342681 ETH,-0.33292509 ETH,0.00000000 ETH,99.3832923859608600""")
if __name__ == '__main__':
data: DataFrame = pandas.read_csv(csv_string)
response = requests.post(
'https://slack.com/api/chat.postMessage',
data={
'token': 'your-token',
'channel': '#the-channel',
'text': data.to_markdown() # can be what ever you want, ie: data.to_csv()
}
)
print(response.json())编辑松弛结果
https://stackoverflow.com/questions/63781437
复制相似问题