我有以下格式的数据:
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
我一直在尝试创建新的数据框并将其与旧的数据框合并,但运气不好。 感谢您的任何建议。
答案 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;被设置为索引。