将 Pandas 数据帧发送到 slack

Vik*_*r.w 5 python pandas slack

我正在尝试使用以下小脚本在 slack 的频道上发送一个熊猫数据帧:

import requests
URL = 'XXXXXX'

response = requests.post(
        URL, data={dataframe}
    )
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我收到以下错误消息:'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
Run Code Online (Sandbox Code Playgroud)

当我将它作为 json 发送到 slack 时,它看起来像这样:

{"Bot instance":{"0":"Biki - TECUSDT","1":"Binance - XEMBTC","2":"Binance - XEM/ETH","3":"bitfinex ant/btc", "4":"Bitfinex ANT/ETH","5":"Bitfinex ANT/USD","6":"Bitfinex ODE/BTC","7":"Bitfinex ODE/USD","8":"Bitfinex - RIFBTC","9":"Bitfinex - RIFUSD","10":"Bitfinex - VLD/USD","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":"Hitbtc - PLBTETH","21":"Hitbtc - PLR/BTC","22":"Hitbtc - PLR/ETH","23":"Hitbtc - PLR/USDT","24":"Kucoin - RIFBTC","25":"LGO - LGOUSD","26":"Liquid - RIFUSD","27":"Livecoin - PLBTBTC","28": "Livecoin - PLBTETH","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 USD","6":null,"7":"-163.0524

用户不可读

Jan*_*nes 6

您可以使用pandas.DataFrame.to_markdown将数据编码为字符串。这在 Slack 中应该是可读的。

response = requests.post(
    URL,
    data={'<payload_key>': dataframe.to_markdown()}
)
Run Code Online (Sandbox Code Playgroud)

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  |
Run Code Online (Sandbox Code Playgroud)


小智 0

您的“数据”应该是编码字符串,例如

message = 'string'
data = message.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)