Python 大熊猫的Groupby、shif和滚动平均数

Python 大熊猫的Groupby、shif和滚动平均数,python,pandas,dataframe,Python,Pandas,Dataframe,我试着在熊猫身上进行分组、变换和滚动。我一直在寻找解决办法,但运气不佳。我有一个解决办法,但不是最好的。特别是因为我将来需要做滚动标准差。有谁能帮我提出一个更好的方法吗 输入数据: df = pd.DataFrame({'month': [201912, 202001, 202001, 202002, 202002, 202003, 202003, 202004], 'target': [0, 1, 0, 1, 1, 0, 0, 1] }

我试着在熊猫身上进行分组、变换和滚动。我一直在寻找解决办法,但运气不佳。我有一个解决办法,但不是最好的。特别是因为我将来需要做滚动标准差。有谁能帮我提出一个更好的方法吗

输入数据:

df = pd.DataFrame({'month': [201912, 202001, 202001, 202002, 202002, 202003, 202003, 202004],
               'target': [0, 1, 0, 1, 1, 0, 0, 1]
              },
              index = [14, 15, 16, 17, 18, 19, 20, 21])
两个月滚动平均值和一个月班次的预期产量:

df = pd.DataFrame({'month': [201912, 202001, 202002, 202003, 202004],
               'roll_2m': [np.nan, np.nan, 0.33, 0.75, 0.5]
              },
              index = [1, 2, 3, 4, 5])
解决此问题的一个糟糕的解决方法是:

rolling_count = df.shift(1).target['count'].rolling(2).sum()
rolling_sum = df.shift(1).target['sum'].rolling(2).sum()
rolling_mean = rolling_sum/rolling_count                           
df['roll_2m'] = rolling_mean

我首先做一个
groupby().agg()

输出:

        sum  count   roll_2m
month                       
201912  NaN    NaN       NaN
202001  NaN    NaN       NaN
202002  1.0    3.0  0.333333
202003  3.0    4.0  0.750000
202004  2.0    4.0  0.500000

谢谢,我认为这是一个更好的解决方案
        sum  count   roll_2m
month                       
201912  NaN    NaN       NaN
202001  NaN    NaN       NaN
202002  1.0    3.0  0.333333
202003  3.0    4.0  0.750000
202004  2.0    4.0  0.500000