Pandas 调整和重新索引漂移时间索引数据帧
我有一个数据集,记录之间的平均间隔为22.xx秒,而中间间隔为21秒 我尝试使用Pandas 调整和重新索引漂移时间索引数据帧,pandas,dataframe,datetimeindex,Pandas,Dataframe,Datetimeindex,我有一个数据集,记录之间的平均间隔为22.xx秒,而中间间隔为21秒 我尝试使用DatetimeIndex.//函数(频率为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
DatetimeIndex.
//函数(频率为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
...
处理时,应返回以下内容
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
也会导致指数重复
关于如何在不丢失太多数据的情况下调整漂移,有什么建议吗
谢谢。对于我来说,在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
另一个想法是使用-它使用连续值创建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
您是否可以添加新的
DataFrame
sample以合并预期的输出?我想。@jezrael我添加了一个所需版本的示例。谢谢,但我已经尝试过了,因为有一个漂移,复制仍然会发生。我还将我已经尝试过的频率添加到问题中。@AtifRaza-你能用返回的重复数据创建一些数据吗?然后加上预期的产出?最接近真实数据。我在使用round
时添加了导致索引重复的条目。如果使用重采样和平均值
可以解决此问题,您是否也可以发表意见?谢谢。@AtifRaza-是的,用mean
重新采样创建唯一的DatetimeIndex
,比如df=df.resample('20S').mean()
太好了。如果在答案中添加重采样位,效果会更好。那我可以接受。再次感谢。