Python 根据窗口大小,滚动会产生意外的结果

Python 根据窗口大小,滚动会产生意外的结果,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我试图在类似于以下数据帧的数据帧上计算移动平均值: ID ID2 Date Value 1 A 1-1-2020 1 1 B 1-1-2020 6 1 C 1-1-2020 2769 1 D 1-1-2020 0 1 A 2-1-2020 0 1 B 2-1-2020 1 1 C 2-1-2020 2461 1 D 2-1-2020 0 我

我试图在类似于以下数据帧的数据帧上计算移动平均值:

ID   ID2   Date   Value
1     A    1-1-2020   1
1     B    1-1-2020   6
1     C    1-1-2020   2769
1     D    1-1-2020   0
1     A    2-1-2020   0
1     B    2-1-2020   1
1     C    2-1-2020   2461
1     D    2-1-2020   0
我想返回一个基于ID和值的24个月滚动平均值。到目前为止,我已经尝试了以下代码:

df['rolling_avg'] = df.groupby(['ID'])['Value'].apply(lambda x: x.rolling(window=24, min_periods=1).mean())
当我用上面的代码运行脚本时,奇怪的是,第一个月我得到了1107,第二个月得到了1242。我的直觉是,这与熊猫决定窗户的方式有关。为了测试这一点,我尝试过这样调整窗口:

df['rolling_avg'] = df.groupby(['ID'])['Value'].apply(lambda x: x.rolling(window=2, min_periods=1).mean())
然后,脚本返回第一个月的预期结果2776,第二个月的预期结果2619

编辑:


我的数据以这样的方式排列:每个日期、每个ID、每个ID2只有一条记录。我想要每个日期每个ID的滚动平均值。

您的问题/问题到底是什么?你的预期产出是多少?我不太清楚。我的问题是函数返回了一个意外的结果。我预计第一个月的平均值为2776,因为1+6+2769+0=2776/1=2776。然而,我收到了1107的结果,这让我感到困惑。