Panda连续多个时间序列,分组和扩展缺失的数据

问题描述 投票:1回答:1

我有从CSV文件导入的多个时间序列数据。这些数据都有时间戳,但时间戳并不总是匹配:

时间序列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函数将它们连接在一起并组合'UUT',但是,如何用前一个值填充空时隙以使最终表看起来类似于:

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数据。

python pandas dataframe time-series multi-index
1个回答
1
投票

找到与index.unionreindex数据帧,concatpivot的索引的并集,以获得所需的输出。

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 -

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.