python - 使用 pandas 重采样函数对每小时值进行上采样时出现意外结果

标签 python time-series pandas

我尝试使用 pandas 重新采样函数对每日 TimeSeries 值进行上采样。当我对一天(2012-01-01)进行上采样时,我希望结果是考虑进行上采样的那一天的平均值。结果应该如下所示:

2012-01-01   -0,285344
Freq: D

但是,pandas 返回这样的两天:

2012-01-01   -0.412417
2012-01-02    0.127073
Freq: D

这是一个错误还是一个功能?如果这是一个功能,我如何设置重新采样参数来实现我的目标?

谢谢, 托马斯

这是完整的示例:

In [66]: rng = date_range('1/1/2012', periods=24, freq='H')

In [67]: ts = Series(np.random.randn(len(rng)), index=rng)

In [68]: ts
Out[68]:
2012-01-01 00:00:00   -0.412417
2012-01-01 01:00:00    0.442482
2012-01-01 02:00:00    1.321009
2012-01-01 03:00:00    0.104408
2012-01-01 04:00:00    1.124611
2012-01-01 05:00:00   -1.041293
2012-01-01 06:00:00    1.194104
2012-01-01 07:00:00   -0.249706
2012-01-01 08:00:00    1.927320
2012-01-01 09:00:00   -0.828365
2012-01-01 10:00:00    0.163760
2012-01-01 11:00:00   -0.736053
2012-01-01 12:00:00   -0.323408
2012-01-01 13:00:00    1.478162
2012-01-01 14:00:00    1.449437
2012-01-01 15:00:00   -1.114443
2012-01-01 16:00:00   -0.003780
2012-01-01 17:00:00    0.554562
2012-01-01 18:00:00   -2.019614
2012-01-01 19:00:00    0.463484
2012-01-01 20:00:00    0.862818
2012-01-01 21:00:00   -1.280048
2012-01-01 22:00:00   -0.137987
2012-01-01 23:00:00   -0.428777
Freq: H

In [69]: ts.resample('D')
Out[69]:
2012-01-01   -0.412417
2012-01-02    0.127073
Freq: D

最佳答案

您可以通过使用 loffset 和 close 选项获得您想要的结果。

>>> ts.resample('D', how='mean', closed="left", loffset=datetime.timedelta(days=-1))
2012-01-01    0.200299

关于python - 使用 pandas 重采样函数对每小时值进行上采样时出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11773862/

相关文章:

python - 我将 rasterio 捆绑到可执行文件中的方式有​​问题

r - 在ts中使用日期字段?

python - Pandas 滚动意味着更新

Python 列表顺序

python - 2to3-2.7 和 2to3-3.1 有什么区别?

python - 如何使用时间列创建包含当天部分时间的新列 ['morning' 、 'afternoon' 、 'evening' 、 'night' ]?

python - Pandas 中的采样从 1 个月减少到几个月

python - 从 pandas 读取 csv 时如何删除双引号?

python - 将 str.contains 映射到 pandas DataFrame

python - 使用Django的抽象类来进行简单的代码复用是否合适?