有什么方法可以将python pandas数据帧发布到松弛状态?

时间:2016-09-30 13:37:20

标签: python pandas slack

如何将pandas数据框导出为松弛?

df.to_json()似乎是一个潜在的候选者,再加上松弛的传入webhook,但是然后解析消息显示为一个漂亮的降价/ html-ized表对我来说并不明显。

长时间听众,第一次打电话的人,请放轻松我...

3 个答案:

答案 0 :(得分:3)

Slack似乎没有采用任意HTML输入或格式化带有转义换行符的文本,这限制了纯文本。 tabulate如另一个答案中所建议的那样,但是如果你想要一些自包含的东西,那就可以了。假设您的数据框位于df

  1. 在python终端会话中,jupyter notebook或print语句运行print(repr(df))之类的内容。
  2. 复制输出
  3. 粘贴在松弛的代码块中。
  4. 对于我手边的数据框,这是你在点击输入之前在松弛聊天框中输入的内容。

    ```
       code    sid state        triplet
    0  SCAN   2057    AL   2057:AL:SCAN
    1  SNOW    ABY    CA    ABY:CA:SNOW
    2  SNOW  15A21    MT  15A21:MT:SNOW
    3  COOP   0010    ID   0010:ID:COOP
    4  SNOW  1F01A    BC  1F01A:BC:SNOW
    ```
    

    如果您想将其整合为Web服务,请将复制/粘贴内容替换为Web服务/挂钩。

答案 1 :(得分:2)

DataFrame上有一个{ "query": { "bool": { "must_not": [ { "terms": { "assignedArticleList.assignedArticleId": [ 1, 2, 3, 4 ] } } ] } } } 方法,因此可能会有效。但如果您只是想剪切和粘贴,Tabulate是一个不错的选择。来自文档:

.to_html()

返回

from tabulate import tabulate
df = pd.DataFrame([["Name","Age"],["Alice",24],["Bob",19]])
print tabulate(df, tablefmt="grid")

将其粘贴到Slack的代码块中,它应该很好地显示出来。

答案 2 :(得分:0)

对于希望查询Postgres数据库表并将其以表格格式发送到slack的任何人。

Postgres DB连接模块

print(str(x))

“广播到频道”松弛模块

def dbConnect (db_parm, username_parm, host_parm, pw_parm):
    # Parse in connection information
    credentials = {'host': host_parm, 'database': db_parm, 'user': username_parm, 'password': pw_parm}
    conn = psycopg2.connect(**credentials)
    conn.autocommit = True  # auto-commit each entry to the database
    conn.cursor_factory = RealDictCursor
    cur = conn.cursor()
    print ("Connected Successfully to DB: " + str(db_parm) + "@" + str(host_parm))
    return conn, cur

准备Slack消息模块

def slackBot(self, message):
    webhook_url = self.slack_incoming_webhook
    slack_data = {"text":"``` " + str(message) + " ``` <!here>"}
    header = {'Content-Type': 'application/json'}
    response = requests.post(webhook_url, json=slack_data,headers=header)
    if response.status_code != 200:
        raise ValueError(
            'Request to slack returned an error %s, the response is:\n%s'
            % (response.status_code, response.text)
          )

Sample output message in Slack