调整和重新索引漂移时间索引数据框
Adjusting and reindexing a drifting time index dataframe
我有一个数据集,记录之间的平均间隔为 22.xx 秒,而中值间隔为 21 秒。
我尝试使用 DatetimeIndex.
floor/ceil/round 函数(频率为 20/21/22 秒),但是这些会导致索引重复,我需要随后将数据帧与另一个数据帧合并,因此,必须避免重复索引。删除重复的索引也会导致大量数据丢失。
我希望数据帧使用等距时间间隔,最好四舍五入为 00/20/40 秒。
下面显示了一些示例数据行。
2018-05-06 18:02:24 1.15e+07
2018-05-06 18:02:45 1.35e+07
2018-05-06 18:03:05 1.08e+07
...
2018-05-06 18:08:30 1.11e+07
2018-05-06 18:08:50 1.20e+07
2018-05-06 18:09:10 1.30e+07
...
处理后应 return 以下内容。
2018-05-06 18:02:20 1.15e+07
2018-05-06 18:02:40 1.35e+07
2018-05-06 18:03:00 1.08e+07
...
2018-05-06 18:08:20 1.11e+07
2018-05-06 18:08:40 1.20e+07
2018-05-06 18:09:00 1.30e+07
...
四舍五入导致上面有重复的索引,而floor
和ceil
也会导致重复的索引。
关于如何在不丢失太多数据的情况下调整漂移有什么建议吗?
谢谢。
我 DatetimeIndex.round
20S
工作了 20 秒:
df.index = df.index.round('20S')
print (df)
col
2018-05-06 18:02:20 11500000.0
2018-05-06 18:02:40 13500000.0
2018-05-06 18:03:00 10800000.0
2018-05-06 18:08:40 11100000.0
2018-05-06 18:08:40 12000000.0
2018-05-06 18:09:20 13000000.0
另一个想法是使用 DataFrame.resample
- 它创建具有连续值的 DatetimeIndex
:
df = df.resample('20S').mean()
print (df)
col
2018-05-06 18:02:20 11500000.0
2018-05-06 18:02:40 13500000.0
2018-05-06 18:03:00 10800000.0
2018-05-06 18:03:20 NaN
2018-05-06 18:03:40 NaN
2018-05-06 18:04:00 NaN
2018-05-06 18:04:20 NaN
2018-05-06 18:04:40 NaN
2018-05-06 18:05:00 NaN
2018-05-06 18:05:20 NaN
2018-05-06 18:05:40 NaN
2018-05-06 18:06:00 NaN
2018-05-06 18:06:20 NaN
2018-05-06 18:06:40 NaN
2018-05-06 18:07:00 NaN
2018-05-06 18:07:20 NaN
2018-05-06 18:07:40 NaN
2018-05-06 18:08:00 NaN
2018-05-06 18:08:20 11100000.0
2018-05-06 18:08:40 12000000.0
2018-05-06 18:09:00 13000000.0
然后可以删除这个值:
df = df.resample('20S').mean().dropna(how='all')
print (df)
col
2018-05-06 18:02:20 11500000.0
2018-05-06 18:02:40 13500000.0
2018-05-06 18:03:00 10800000.0
2018-05-06 18:08:20 11100000.0
2018-05-06 18:08:40 12000000.0
2018-05-06 18:09:00 13000000.0
我有一个数据集,记录之间的平均间隔为 22.xx 秒,而中值间隔为 21 秒。
我尝试使用 DatetimeIndex.
floor/ceil/round 函数(频率为 20/21/22 秒),但是这些会导致索引重复,我需要随后将数据帧与另一个数据帧合并,因此,必须避免重复索引。删除重复的索引也会导致大量数据丢失。
我希望数据帧使用等距时间间隔,最好四舍五入为 00/20/40 秒。
下面显示了一些示例数据行。
2018-05-06 18:02:24 1.15e+07
2018-05-06 18:02:45 1.35e+07
2018-05-06 18:03:05 1.08e+07
...
2018-05-06 18:08:30 1.11e+07
2018-05-06 18:08:50 1.20e+07
2018-05-06 18:09:10 1.30e+07
...
处理后应 return 以下内容。
2018-05-06 18:02:20 1.15e+07
2018-05-06 18:02:40 1.35e+07
2018-05-06 18:03:00 1.08e+07
...
2018-05-06 18:08:20 1.11e+07
2018-05-06 18:08:40 1.20e+07
2018-05-06 18:09:00 1.30e+07
...
四舍五入导致上面有重复的索引,而floor
和ceil
也会导致重复的索引。
关于如何在不丢失太多数据的情况下调整漂移有什么建议吗?
谢谢。
我 DatetimeIndex.round
20S
工作了 20 秒:
df.index = df.index.round('20S')
print (df)
col
2018-05-06 18:02:20 11500000.0
2018-05-06 18:02:40 13500000.0
2018-05-06 18:03:00 10800000.0
2018-05-06 18:08:40 11100000.0
2018-05-06 18:08:40 12000000.0
2018-05-06 18:09:20 13000000.0
另一个想法是使用 DataFrame.resample
- 它创建具有连续值的 DatetimeIndex
:
df = df.resample('20S').mean()
print (df)
col
2018-05-06 18:02:20 11500000.0
2018-05-06 18:02:40 13500000.0
2018-05-06 18:03:00 10800000.0
2018-05-06 18:03:20 NaN
2018-05-06 18:03:40 NaN
2018-05-06 18:04:00 NaN
2018-05-06 18:04:20 NaN
2018-05-06 18:04:40 NaN
2018-05-06 18:05:00 NaN
2018-05-06 18:05:20 NaN
2018-05-06 18:05:40 NaN
2018-05-06 18:06:00 NaN
2018-05-06 18:06:20 NaN
2018-05-06 18:06:40 NaN
2018-05-06 18:07:00 NaN
2018-05-06 18:07:20 NaN
2018-05-06 18:07:40 NaN
2018-05-06 18:08:00 NaN
2018-05-06 18:08:20 11100000.0
2018-05-06 18:08:40 12000000.0
2018-05-06 18:09:00 13000000.0
然后可以删除这个值:
df = df.resample('20S').mean().dropna(how='all')
print (df)
col
2018-05-06 18:02:20 11500000.0
2018-05-06 18:02:40 13500000.0
2018-05-06 18:03:00 10800000.0
2018-05-06 18:08:20 11100000.0
2018-05-06 18:08:40 12000000.0
2018-05-06 18:09:00 13000000.0