熊猫时间序列操纵

时间:2017-11-22 09:56:06

标签: python pandas time-series

我有以下格式的数据:

id  1234    5678    9876    
date                                                                                    
2017-10-22 11:12:21.926000000   NaN     NaN     NaN     
2017-10-22 11:16:34.589000000   NaN     5       NaN
2017-10-22 11:20:45.192000000   NaN     NaN     10 
2017-10-22 11:22:22.361000000   12      NaN     NaN 
2017-10-22 11:25:25.034000000   NaN     8       NaN 

我希望将这些数据清理成适当的分钟时间序列并随身携带转发每分钟的值,直到找到时间ID的新值,"所需的时间范围"。

输出:

id  1234    5678    9876    
date                                                                                    
2017-10-22 11:12:00     NaN     NaN     NaN     
2017-10-22 11:13:00     NaN     NaN     NaN     
2017-10-22 11:14:00     NaN     NaN     NaN     
2017-10-22 11:15:00     NaN     NaN     NaN     
2017-10-22 11:16:00     NaN     5       NaN
2017-10-22 11:17:00     NaN     5       NaN
2017-10-22 11:18:00     NaN     5       NaN
2017-10-22 11:19:00     NaN     5       NaN
2017-10-22 11:20:00     NaN     5       10 
2017-10-22 11:21:00     NaN     5       10 
2017-10-22 11:22:00     12      5       10 
2017-10-22 11:23:00     12      5       10 
2017-10-22 11:24:00     12      5       10 
2017-10-22 11:25:00     12      8       10 
2017-10-22 11:26:00     12      8       10 

我一直在尝试创建新的数据框并将其与旧的数据框合并,但运气不好。 感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

假设' d'是您显示的起始点的数据框:

d.date = pd.to_datetime(d.date).values.astype('<M8[m]')
d = d.set_index('date')
d.resample('1Min').ffill().fillna(method='ffill')

你必须切断&#39;调用.values.astype('<M8[m]')秒的秒数和分数,因为ffill即使几秒钟也会向上舍入。另外两个ffill调用看起来很奇怪,但是如果你只尝试一个调用,你会看到事情只是部分填充,直到任何列中出现另一个非NaN值。

并确保&#39; date&#39;被设置为索引。