python - 使用 loffset 对 pandas DataFrame 重新采样会引入一个小时的额外偏移量

标签 python pandas

我有一个包含 DatetimeIndex(具有不规则间隔和时区信息)和两个值列的 DataField:

In:  df.head()
Out: 
                                      v1    v2
2014-01-18 00:00:00.842537+01:00  130107  7958
2014-01-18 00:00:00.858443+01:00  130251  7958
2014-01-18 00:00:00.874054+01:00  130476  7958
2014-01-18 00:00:00.889617+01:00  130250  7958
2014-01-18 00:00:00.905163+01:00  130327  7958

In:  df.index
Out:
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-01-18 00:00:00.842537984, ..., 2014-01-18 00:10:00.829031936]
Length: 38558, Freq: None, Timezone: Europe/Berlin

如果我以任何频率重新采样此 DataField,则保留时区:

In : df_3.resample('1S', 'mean',).head()
Out: 
                                      v1           v2
2014-01-18 00:00:00+01:00  130311.090909  7958.000000
2014-01-18 00:00:01+01:00  130385.125000  7958.000000
2014-01-18 00:00:02+01:00  130332.593750  7957.000000
2014-01-18 00:00:03+01:00  130377.061538  7957.307692
2014-01-18 00:00:04+01:00  130384.171875  7957.640625

当引入任何 loffset 时,时间戳会被额外的负小时抵消:

In : df_3.resample('1S', 'mean', loffset='1S').head()
Out: 
                                      v1           v2
2014-01-17 23:00:01+01:00  130311.090909  7958.000000
2014-01-17 23:00:02+01:00  130385.125000  7958.000000
2014-01-17 23:00:03+01:00  130332.593750  7957.000000
2014-01-17 23:00:04+01:00  130377.061538  7957.307692
2014-01-17 23:00:05+01:00  130384.171875  7957.640625

即使特别给出“空”偏移量:

In : df_3.resample('1S', 'mean', loffset='0S').head()
Out: 
                                      v1           v2
2014-01-17 23:00:01+01:00  130311.090909  7958.000000
2014-01-17 23:00:02+01:00  130385.125000  7958.000000
2014-01-17 23:00:03+01:00  130332.593750  7957.000000
2014-01-17 23:00:04+01:00  130377.061538  7957.307692
2014-01-17 23:00:05+01:00  130384.171875  7957.640625

为了保持正确的时间戳,我必须将这个小时添加到偏移量中:

In : df_3.resample('1S', 'mean', loffset='1H1S').head()
Out: 
                                      v1           v2
2014-01-18 00:00:01+01:00  130311.090909  7958.000000
2014-01-18 00:00:02+01:00  130385.125000  7958.000000
2014-01-18 00:00:03+01:00  130332.593750  7957.000000
2014-01-18 00:00:04+01:00  130377.061538  7957.307692
2014-01-18 00:00:05+01:00  130384.171875  7957.640625

为什么会这样?我错过了什么吗?

最佳答案

回答我自己的问题,因为它仍然经常访问:它实际上是一个错误,已在 0.16 版本中修复。

关于python - 使用 loffset 对 pandas DataFrame 重新采样会引入一个小时的额外偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21329425/

相关文章:

python - PyPi 上缺失模块的总下载量

python - 在 FOR 循环内的行之间执行 Sum 运算时排除 NaN 值

python - 使用子图时如何使用 matplotlib.pyplot.xticks 或类似的?

python - 删除具有不同值的重复行

python - 使用数据框列更改 x 轴

Python PrettyPrint 输出到变量

python - 检查列表中是否有多个项目的最简单方法?

pandas - Knn 对距离上的特定特征赋予更多权重

python - 将 sum() 与 groupby 一起使用时保留其他列

python - Pandas 从具有名称列表的列中获取最常见的名称