我試圖使用mosquitto接收數據並使用python熊貓將其保存爲csv文件。數據是連續的,直到我停止腳本。pandas.core.common.PandasError:未正確調用DataFrame構造函數
mqtt_pub.py
import paho.mqtt.client as mqtt
import random
import schedule
import time
mqttc = mqtt.Client("python_pub")
mqttc.connect("localhost", 1883)
def job():
mqttc.publish("hello/world", random.randint(1, 10))
schedule.every(1).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
mqttc.loop(2)
mqtt_sub.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("hello/world")
def on_message(client, userdata, msg):
datas = map(int, msg.payload)
for num in datas:
df = pd.DataFrame(data=datas, columns=['the_number'])
df.to_csv("testing.csv")
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost", 1883, 60)
client.loop_forever()
從上面mqtt_sub.py
腳本,我得到testing.csv
,看起來像這樣
| the _number
0 | 2
2
是我收到befo最後一位再我停止mqtt_sub.py
腳本
Connected with result code 0
[3]
[9]
[5]
[3]
[7]
[2]
...
...
KeyboardInterrupt
我希望得到testing.csv
這樣
| the_number
0 | 3
1 | 9
2 | 5
...
...
5 | 2
爲了實現這個目標我試圖改變以下df = pd.DataFrame(data=datas, columns=['the_number'])
到df = pd.DataFrame(data=num, columns=['the_number'])
並出現下列錯誤
pandas.core.common.PandasError: DataFrame constructor not properly called!
有沒有人有任何想法如何解決錯誤?我也覺得我沒有在這裏正確使用for循環。
感謝您的建議和幫助。
[更新]
我添加/更改以下行中on_message
方法
def on_message(client, userdata, msg):
datas = map(int, msg.payload)
df = pd.DataFrame(data=datas, columns=['the_number'])
f = open("test.csv", 'a')
df.to_csv(f)
f.close()
與Nulljack的幫助下,我能夠得到的結果像這樣在我的CSV文件
| the_number
0 | 3
| the_number
0 | 9
| the_number
0 | 5
| the_number
0 | 3
| the_number
0 | 7
我的目標是在CSV文件中實現這樣的效果
| the_number
0 | 3
1 | 9
2 | 5
3 | 3
4 | 7
我相信,'on_connect'是連接時使用的方法蚊子經紀人。 'on_message'是用來顯示通過蚊子代理收到的消息的方法。 – Fang
是的,所以每次你收到一條消息時都應該調用on_message方法,因此你多次調用df.to_csv(「testing.csv」)。這覆蓋以前的數據 – Nulljack
http://stackoverflow.com/questions/17134942/pandas-dataframe-output-end-of-csv詳細信息如何使用熊貓而不是覆蓋文件追加到csv文件的東西@方 – Nulljack