我从三个完全不同的传感器源获取时间序列数据作为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