2017-12-18 134 views
1

我有从CSV文件导入多个时间序列数据。 这些数据都有时间戳,但时间戳并不总是一致的:熊猫concat多个时间序列与分组和延长缺失数据

时间系列1:

     UUT Data 
DateTime           
2017-11-21 18:54:31 uut1 1 
2017-11-22 02:26:48 uut1 2 
2017-11-22 10:19:44 uut1 3 
2017-11-22 15:11:28 uut1 6 
2017-11-22 23:21:58 uut1 7 

时间系列2:

     UUT Data 
DateTime 
2017-11-21 18:47:29 uut2 1 
2017-11-22 02:26:49 uut2 2 
2017-11-22 10:19:44 uut2 3 
2017-11-22 15:17:47 uut2 4 
2017-11-22 23:21:58 uut2 5 
2017-11-23 07:10:56 uut2 6 
2017-11-23 15:15:48 uut2 7 
2017-11-24 12:16:58 uut2 9 

我可以用concat函数加入他们的行列然而,我怎样才能填满前一个值的空时隙,以便让决赛桌看起来类似于:

DateTime   UUT Data 
11/21/17 18:47:29 uut1 1 
11/21/17 18:54:31  1 
11/22/17 2:26:48  2 
11/22/17 2:26:49  2 
11/22/17 10:19:44  3 
11/22/17 15:11:28  6 
11/22/17 15:17:47  6 
11/22/17 23:21:58  7 
11/23/17 7:10:56  8 
11/23/17 15:15:48  8 
11/23/17 15:22:16  9 
11/24/17 12:16:58  11 
11/21/17 18:47:29 uut2 1 
11/21/17 18:54:31  1 
11/22/17 2:26:48  1 
11/22/17 2:26:49  2 
11/22/17 10:19:44  3 
11/22/17 15:11:28  3 
11/22/17 15:17:47  4 
11/22/17 23:21:58  5 
11/23/17 7:10:56  6 
11/23/17 15:15:48  7 
11/23/17 15:22:16  7 
11/24/17 12:16:58  9 

,或者这样:

DateTime   uut1 uut2 
11/21/17 18:47:29 1 1 
11/21/17 18:54:31 1 1 
11/22/17 2:26:48 2 1 
11/22/17 2:26:49 2 2 
11/22/17 10:19:44 3 3 
11/22/17 15:11:28 6 3 
11/22/17 15:17:47 6 4 
11/22/17 23:21:58 7 5 
11/23/17 7:10:56 8 6 
11/23/17 15:15:48 8 7 
11/23/17 15:22:16 9 7 
11/24/17 12:16:58 11 9 

我的最终目标是能够绘制两个uut1和uut2数据在单一时间序列图。

回答

1

找到索引与index.union,reindex数据帧的联合,concat然后pivot以获得您想要的输出。

i = df1.index.union(df2.index) 
df1 = df1.reindex(i).reset_index().bfill().ffill() 
df2 = df2.reindex(i).reset_index().bfill().ffill() 

df = pd.concat([df1, df2]).pivot('DateTime', 'UUT', 'Data') 
df 

UUT     uut1 uut2 
DateTime      
2017-11-21 18:47:29 1.0 1.0 
2017-11-21 18:54:31 1.0 2.0 
2017-11-22 02:26:48 2.0 2.0 
2017-11-22 02:26:49 2.0 2.0 
2017-11-22 10:19:44 3.0 3.0 
2017-11-22 15:11:28 6.0 4.0 
2017-11-22 15:17:47 6.0 4.0 
2017-11-22 23:21:58 7.0 5.0 
2017-11-23 07:10:56 7.0 6.0 
2017-11-23 15:15:48 7.0 7.0 
2017-11-24 12:16:58 7.0 9.0 

最后,绘制,使用 -

df.plot(subplots=True, drawstyle='steps-post') 
plt.show() 

enter image description here

+0

这是真棒,非常感谢你,为绘图,我用图(drawstyle ='步骤,后') – user97662

+0

@ user97662好的,感谢您的评论。我编辑了我的答案。 –