Pandas 调整和重新索引漂移时间索引数据帧

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

我有一个数据集,记录之间的平均间隔为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-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()
太好了。如果在答案中添加重采样位,效果会更好。那我可以接受。再次感谢。