我從三個完全不同的傳感器源獲取時間序列數據作爲CSV文件,並且希望將它們合併爲一個大的CSV文件。 我已經設法使用numpy的genfromtxt將它們讀入numpy,但我不確定要從這裏做什麼。使用numpy/pandas按時間戳合併時間序列數據
基本上,我已經是這樣的:
表1:
timestamp val_a val_b val_c
表2:
timestamp val_d val_e val_f val_g
表3:
timestamp val_h val_i
所有時間戳是UNIX毫秒t imestamps爲numpy.uint64。
而我想要的是:
timestamp val_a val_b val_c val_d val_e val_f val_g val_h val_i
...其中所有數據合併,並通過時間戳排序。三個表格中的每一個都已按時間戳排序。 由於數據來自不同的來源,因此不能保證來自表1的時間戳也將在表2或3中,反之亦然。在這種情況下,空值應該標記爲N/A。
到目前爲止,我用熊貓來轉換數據,像這樣嘗試:
df_sensor1 = pd.DataFrame(numpy_arr_sens1)
df_sensor2 = pd.DataFrame(numpy_arr_sens2)
df_sensor3 = pd.DataFrame(numpy_arr_sens3)
,然後使用pandas.DataFrame.merge試過,但我敢肯定,這將不適合什麼工作,我現在想做。任何人都可以將我指向正確的方向嗎?
你能告訴它應該工作你試着用'merge',例如,如果你做了'合併= pd.merge(df_sensor1,df_sensor_2,上= '戳')',然後重複'df_seonsor3',或者如果你設置索引爲所有dfs的時間戳,那麼你可以只做'pd.concat([df_sensor_1,df_seonsor2,df_sensor3])' – EdChum
謝謝你的快速回答!我完全像你寫的那樣使用了'merge',但是顯然做了一個內部連接,所以只有在所有表中有時間戳的數據點被寫入到合併表中。我嘗試了一個外連接,它包含了所有的數據,但也沒有獲得訂購權。 雖然我只是嘗試'concat'。我做了'merged = pd.concat([df_sensor1,df_sensor2,df_sensor3],axis = 1)'和'merged.to_csv('out.csv',sep =';',header = True,index = True,na_rep = '不適用')'這似乎已經完成了這項工作。我將不得不在明天進行驗證。 – vind