Python 2.7 按时间顺序合并插入行,保留多个数据集的所有数据帧
我是熊猫方面的新手,已经关注了很多文档和线程,但没有找到解决方案。我必须合并三个不同的数据集。数据集有时间戳。我必须合并数据集,使帧按时间顺序排列。请帮忙Python 2.7 按时间顺序合并插入行,保留多个数据集的所有数据帧,python-2.7,pandas,Python 2.7,Pandas,我是熊猫方面的新手,已经关注了很多文档和线程,但没有找到解决方案。我必须合并三个不同的数据集。数据集有时间戳。我必须合并数据集,使帧按时间顺序排列。请帮忙 df1= 2017-09-28 19:00:48.035883 116.035883 2 5B7 Rx d 8 FA 02 C2 FF FC CF FF C2 2017-09-28 19:00:53.035358 121.035358 2 5B7 Rx
df1=
2017-09-28 19:00:48.035883 116.035883 2 5B7 Rx d 8 FA 02 C2 FF FC CF FF C2
2017-09-28 19:00:53.035358 121.035358 2 5B7 Rx d 8 F9 02 F2 02 FF FF FF F9
2017-09-28 19:00:53.035596 121.035596 2 5B7 Rx d 8 FA 02 C2 FF FC CF FF C2
2017-09-28 19:00:58.035314 126.035314 2 5B7 Rx d 8 F9 02 F2 02 FF FF FF F9
2017-09-28 19:00:58.035796 126.035796 2 5B7 Rx d 8 FA 02 C2 FF FC CF FF C2
2017-09-28 19:00:59.856818 127.856818 2 5B7 Rx d 8 F9 02 F2 02 FF FF FF F9
df2=
2017-09-28 19:00:55.168703 [ RESPONSE ] 37 f4 67 13 4e d6 02 b2 59 c2 e6 82
2017-09-28 19:00:55.182446 [ REQUEST ] f4 37 27 14 00 00 00 20 51 ef e2 0d f1
2017-09-28 19:00:55.213749 [ RESPONSE ] 37 f4 7f 27 78
2017-09-28 19:00:55.274877 [ RESPONSE ] 37 f4 67 14
2017-09-28 19:00:55.283833 [ REQUEST ] f4 37 31 01 0f 1f 04
df3=
2017-09-28 19:00:55.069731 145077 107.6890 231 NM_ReadySleepState
2017-09-28 19:00:55.069792 145078 107.6890 232 NM_ReadySleepState
2017-09-28 19:00:55.120177 145079 107.7420 233 SW2 heartbeat
2017-09-28 19:00:55.190568 145080 107.8080 234 SW1 heartbeat
merged=
2017-09-28 19:00:48.035883 116.035883 2 5B7 Rx d 8 FA 02 C2 FF FC CF FF C2
2017-09-28 19:00:53.035358 121.035358 2 5B7 Rx d 8 F9 02 F2 02 FF FF FF F9
2017-09-28 19:00:53.035596 121.035596 2 5B7 Rx d 8 FA 02 C2 FF FC CF FF C2
2017-09-28 19:00:55.069731 145077 107.6890 231 NM_ReadySleepState
2017-09-28 19:00:55.069792 145078 107.6890 232 NM_ReadySleepState
2017-09-28 19:00:55.120177 145079 107.7420 233 SW2 heartbeat
2017-09-28 19:00:55.168703 [ RESPONSE ] 37 f4 67 13 4e d6 02 b2 59 c2 e6 82
2017-09-28 19:00:55.182446 [ REQUEST ] f4 37 27 14 00 00 00 20 51 ef e2 0d f1
2017-09-28 19:00:55.190568 145080 107.8080 234 SW1 heartbeat
2017-09-28 19:00:55.213749 [ RESPONSE ] 37 f4 7f 27 78
2017-09-28 19:00:55.274877 [ RESPONSE ] 37 f4 67 14
2017-09-28 19:00:55.283833 [ REQUEST ] f4 37 31 01 0f 1f 04
2017-09-28 19:00:58.035314 126.035314 2 5B7 Rx d 8 F9 02 F2 02 FF FF FF F9
2017-09-28 19:00:58.035796 126.035796 2 5B7 Rx d 8 FA 02 C2 FF FC CF FF C2
2017-09-28 19:00:59.856818 127.856818 2 5B7 Rx d 8 F9 02 F2 02 FF FF FF F9
2017-09-28 19:00:48.035883 116.035883 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:53.035358 121.035358 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:53.035596 121.035596 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:58.035314 126.035314 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:58.035796 126.035796 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:59.856818 127.856818 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:55.069731 145077 107.6890 231 NM_ReadySleepState
2017-09-28 19:00:55.069792 145078 107.6890 232 NM_ReadySleepState
2017-09-28 19:00:55.120177 145079 107.7420 233 SW2 heartbeat
2017-09-28 19:00:55.190568 145080 107.8080 234 SW1 heartbeat
DateTime_string
DateTime
2017-09-28 19:00:48.035883 2017-09-28 19:00:48.035883
2017-09-28 19:00:53.035358 2017-09-28 19:00:53.035358
2017-09-28 19:00:53.035596 2017-09-28 19:00:53.035596
2017-09-28 19:00:58.035314 2017-09-28 19:00:58.035314
2017-09-28 19:00:58.035796 2017-09-28 19:00:58.035796
2017-09-28 19:00:59.856818 2017-09-28 19:00:59.856818
2017-09-28 19:00:55.069731 2017-09-28 19:00:55.069731
2017-09-28 19:00:55.069792 2017-09-28 19:00:55.069792
2017-09-28 19:00:55.120177 2017-09-28 19:00:55.120177
2017-09-28 19:00:55.190568 2017-09-28 19:00:55.190568
根据耶斯雷尔的建议:
#set_index("DateTime") for all
mixDfs=[df1,df2,df3]
mix= pd.concat(mixDfs)
print list(mix)
print mix.head(10)
['Data', 'DateTime_string']
Data \
2017-09-28 19:00:48.035883 116.035883 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:53.035358 121.035358 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:53.035596 121.035596 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:58.035314 126.035314 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:58.035796 126.035796 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:59.856818 127.856818 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:55.069731 145077 107.6890 231 NM_ReadySleepState
2017-09-28 19:00:55.069792 145078 107.6890 232 NM_ReadySleepState
2017-09-28 19:00:55.120177 145079 107.7420 233 SW2 heartbeat
2017-09-28 19:00:55.190568 145080 107.8080 234 SW1 heartbeat
DateTime_string
DateTime
2017-09-28 19:00:48.035883 2017-09-28 19:00:48.035883
2017-09-28 19:00:53.035358 2017-09-28 19:00:53.035358
2017-09-28 19:00:53.035596 2017-09-28 19:00:53.035596
2017-09-28 19:00:58.035314 2017-09-28 19:00:58.035314
2017-09-28 19:00:58.035796 2017-09-28 19:00:58.035796
2017-09-28 19:00:59.856818 2017-09-28 19:00:59.856818
2017-09-28 19:00:55.069731 2017-09-28 19:00:55.069731
2017-09-28 19:00:55.069792 2017-09-28 19:00:55.069792
2017-09-28 19:00:55.120177 2017-09-28 19:00:55.120177
2017-09-28 19:00:55.190568 2017-09-28 19:00:55.190568
日期时间
2017-09-28 19:00:48.035883 116.035883 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:53.035358 121.035358 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:53.035596 121.035596 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:58.035314 126.035314 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:58.035796 126.035796 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:59.856818 127.856818 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:55.069731 145077 107.6890 231 NM_ReadySleepState
2017-09-28 19:00:55.069792 145078 107.6890 232 NM_ReadySleepState
2017-09-28 19:00:55.120177 145079 107.7420 233 SW2 heartbeat
2017-09-28 19:00:55.190568 145080 107.8080 234 SW1 heartbeat
DateTime_string
DateTime
2017-09-28 19:00:48.035883 2017-09-28 19:00:48.035883
2017-09-28 19:00:53.035358 2017-09-28 19:00:53.035358
2017-09-28 19:00:53.035596 2017-09-28 19:00:53.035596
2017-09-28 19:00:58.035314 2017-09-28 19:00:58.035314
2017-09-28 19:00:58.035796 2017-09-28 19:00:58.035796
2017-09-28 19:00:59.856818 2017-09-28 19:00:59.856818
2017-09-28 19:00:55.069731 2017-09-28 19:00:55.069731
2017-09-28 19:00:55.069792 2017-09-28 19:00:55.069792
2017-09-28 19:00:55.120177 2017-09-28 19:00:55.120177
2017-09-28 19:00:55.190568 2017-09-28 19:00:55.190568
我认为您需要从第一列创建
DatetimeIndex
,然后使用-每个数据帧中的第一列也必须只包含日期时间
2017-09-28 19:00:48.035883 116.035883 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:53.035358 121.035358 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:53.035596 121.035596 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:58.035314 126.035314 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:58.035796 126.035796 2 5B7 Rx d 8 FA 02...
2017-09-28 19:00:59.856818 127.856818 2 5B7 Rx d 8 F9 02...
2017-09-28 19:00:55.069731 145077 107.6890 231 NM_ReadySleepState
2017-09-28 19:00:55.069792 145078 107.6890 232 NM_ReadySleepState
2017-09-28 19:00:55.120177 145079 107.7420 233 SW2 heartbeat
2017-09-28 19:00:55.190568 145080 107.8080 234 SW1 heartbeat
DateTime_string
DateTime
2017-09-28 19:00:48.035883 2017-09-28 19:00:48.035883
2017-09-28 19:00:53.035358 2017-09-28 19:00:53.035358
2017-09-28 19:00:53.035596 2017-09-28 19:00:53.035596
2017-09-28 19:00:58.035314 2017-09-28 19:00:58.035314
2017-09-28 19:00:58.035796 2017-09-28 19:00:58.035796
2017-09-28 19:00:59.856818 2017-09-28 19:00:59.856818
2017-09-28 19:00:55.069731 2017-09-28 19:00:55.069731
2017-09-28 19:00:55.069792 2017-09-28 19:00:55.069792
2017-09-28 19:00:55.120177 2017-09-28 19:00:55.120177
2017-09-28 19:00:55.190568 2017-09-28 19:00:55.190568
dfs = [df1, df2, df3]
dfs = [pd.to_datetime(x.set_index(df.columns[0])) for x in dfs]
df = pd.concat(dfs).sort_index()
它不起作用。相反,dfs会一个接一个地连接起来。如果没有数据,则很难找到错误。但似乎您的数据帧只有第一列datetime。可以检查吗?所有数据帧都由相同的函数处理,因此具有完全相同的coulmns。索引实际上是datetime。你能解释一下你的坏数据输出吗?例如:19.0.55时的df3帧不在正确的位置,连接输出中的df2帧也不在正确的位置。@Julien:除了Jezrael提出的concate之外,还有几个方法,包括df1.merge(df2,on=“datetime”).merge(df3,on=“datetime”)