2017-12-18 222 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好的,感謝您的評論。我編輯了我的答案。 –