如何用pandas将新行追加到csv文件中?

2024-05-23 00:04:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把从Moskitto broker收到的数据保存为csv文件。下面是mqtt_subscribe.py的脚本

import paho.mqtt.client as mqtt
import pandas as pd

def on_connect(client, userdata, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("test")

def on_message(client, userdata, msg):
    print str(msg.payload)
    datas = map(int, msg.payload)
    df = pd.DataFrame(data=datas, columns=['numbers'])

    f = open("test.csv", 'a')
    df.to_csv(f)
    f.close()

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("localhost", 1883, 60)

client.loop_forever()

这个脚本将打印从代理收到的随机数/数据(直到我手动停止脚本),如下所示(示例)

^{pr2}$

我希望把这个结果写成这样的CSV文件

,numbers
0,4
1,7
2,7

但是我得到了这个

,numbers
0,4
,numbers
0,7
,numbers
0,7

我是不是少了点什么?我相信这是因为方法on_message一直用列覆盖数据帧,但我不知道除了在on_message方法内部之外,我应该在哪里初始化数据帧。在

提前谢谢你。在


Tags: 文件csv数据import脚本clientmessageon
1条回答
网友
1楼 · 发布于 2024-05-23 00:04:09

您可以使用类似的方法将panda数据帧df附加到测试.csv不包括标题:

with open('test.csv', 'a') as csv_file:
    df.to_csv(csv_file, header=False)

“with open”的用法帮助我们不必为显式关闭文件而烦恼

相关问题 更多 >

    热门问题