我在另一个帖子Link上提出了一个问题。但我得到了一个不完整的答案。没有人愿意回答。这就是为什么我要提出另一个修改过的问题。让我简要解释一下这个问题,我想重新采样以下数据:
**`
Timestamp L_x L_y L_a R_x R_y R_a
2403950 621.3 461.3 313 623.3 461.8 260
2403954 622.5 461.3 312 623.3 462.6 260
2403958 623.1 461.5 311 623.4 464 261
2403962 623.6 461.7 310 623.7 465.4 261
2403966 623.8 461.5 309 623.9 466.1 261
2403970 620.9 461.4 309 623.8 465.9 259
2403974 621.7 461.1 308 623 464.8 258
2403978 622.1 461.1 308 621.9 463.9 256
2403982 622.5 461.5 308 621 463.4 255
2403986 622.4 462.1 307 620.7 463.3 254
`**
桌子一直在继续。所有时间戳都以毫秒为单位。我想将其重新采样到100L bin时间。
df = df.resample('100L')
结果表是:
的
Timestamp L_x L_y L_a R_x R_y R_a
2403900 621.3 461.3 313 623.3 461.8 260
2404000 622.5 461.3 312 623.3 462.6 260
2404100 623.1 461.5 311 623.4 464 261
2404200 623.6 461.7 310 623.7 465.4 261
2404300 623.8 461.5 309 623.9 466.1 261
但这不是我想要的结果。因为原始表中的第一个时间戳索引是2403950.所以第一个bin时间应该包含2403950到2404050,但它是2403900 - 2404000.如下所示:
的
Timestamp L_x L_y L_a R_x R_y R_a
2403950 ... ... ... ... ... ...
2404050 ... ... ... ... ... ...
2404150 ... ... ... ... ... ...
2404250 ... ... ... ... ... ...
2404350 ... ... ... ... ... ...
列的其余部分是原始表的值的平均值。
所以要做到这一点,有人会说我必须计算偏移量。在我的情况下,它是50毫秒。并执行以下操作:
df.resample('100L', loffset='50L')
偏移仅将标签向前移动50毫秒,但不会改变平均值。它仍在计算第一个bin时间的平均值,从2403900到2404000而不是2403950到2404050。
感谢您的帮助
答案 0 :(得分:2)
你正在寻找基础kwarg。
base:int,默认0
对于均匀细分1天的频率,聚合间隔的“原点”。例如,对于“5分钟”频率,基数可以在0到4之间。默认值为0
在您的情况下,它看起来像你想要的:
df.resample('100L', base=50)
注意:没有DatetimeIndex / PeriodIndex / TimedeltaIndex的resample会在最近的pandas中引发错误,所以在执行此操作之前应该转换为DatetimeIndex。