繁体   English   中英

在熊猫中重新采样

[英]Resampling in pandas

我在另一个线程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。

谢谢你的帮助

您正在寻找基础 kwarg。

基数:整数,默认 0
对于均匀细分 1 天的频率,聚合间隔的“起点”。 例如,对于“5min”频率,base 的范围可以从 0 到 4。默认为 0


在您的情况下,它看起来像您想要的:

df.resample('100L', base=50)

注意:没有 DatetimeIndex/PeriodIndex/TimedeltaIndex 的重新采样会在最近的 Pandas 中引发错误,因此您应该在执行此操作之前转换为 DatetimeIndex。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM