我在另一个话题上问了一个问题Link https://stackoverflow.com/questions/33446776/how-to-resample-starting-from-the-first-element-in-pandas?answertab=votes#tab-top。但我得到了一个不完整的答案。而且没有人愿意回复。这就是为什么我要提出另一个修改后的问题。让我简单解释一下这个问题,我想重新采样以下数据:
**`
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 的装箱时间。
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 毫秒,但不会更改平均值。例如,它仍在计算从 2403900 到 2404000 的值(而不是 2403950 到 2404050)的平均值。
感谢您的帮助
您正在寻找基础 kwarg。
基数:int,默认0
对于均匀细分 1 天的频率,聚合间隔的“原点”。例如,对于“5 分钟”频率,base 的范围可以从 0 到 4。默认为 0
在你的情况下,它看起来像你想要的:
df.resample('100L', base=50)
注意:没有 DatetimeIndex/PeriodIndex/TimedeltaIndex 的重新采样会在最近的 pandas 中引发错误,因此您应该在执行此操作之前转换为 DatetimeIndex。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)