在Pandas中按DateTimeIndex对行取平均值

后端开发 2026-07-09

我有一个数据框(DataFrame),格式如下:

日期 数量
2008-01-01 5
2008-02-01 55
2008-03-01 6
2008-04-01 10

其中DatetimeIndex使用年-月-日格式。

我想计算每两个连续数值的平均值。我的dataframe 有数百行,因此我想使用 DateOffset 编写一个for循环。我尝试了以下代码(将 df 作为我的数据框名称):

import pandas as pd
from pandas.tseries.offsets import DataOffset
import numpy as np

df = df.set_index(['Date'])

for num in range(0,3):
    begin = pd.Timestamp('2008-01-01') + pd.DateOffset(months = num)
    end = pd.Timestamp('2008-02-01') + pd.DateOffset(months = num)

    print(begin, end)
    print(df.loc['begin':'end']['Number'].mean())

如果运行这段代码,起始日期和结束日期会正确输出,因此DateOffset在工作。但是,平均值都计算为非数字,'nan'。

此外,如果把 beginend 替换为日期本身,它就能对那些特定日期计算出正确的平均值。

非常感谢您的帮助。

解决方案

你是否尝试过使用 df.rolling

你需要做类似 df['Number'].rolling(2).mean() 的事情。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章