在熊猫中滚动总和

时间:2015-09-02 02:12:22

标签: python pandas

我一直在研究这个特殊的问题并尝试了各种不同的方法,但似乎无法解决它。我有一个如下所示的数据框:

    Sequence GameID PlayerA PlayerB Left_Right
   0    1     101    334    326      Right
   1    2     101    334    326      Right
   2    3     101    334    326      Left
   3    4     101    326    334      Left
   4    5     101    326    334      Right
   5    6     101    326    334      Left
   6    7     101    326    334      Right
   7    8     101    326    334      Right
   8    9     101    326    334      Left
   9    10    101    334    326      Left

我最终要创建的是两列,一列的滚动总数为“右”,另一列的滚动总和为“左”。它由GameID和PlayerA分组。在上面的数据框中,我只显示一个gameid的一部分,因为它是一个snippit。这类似于excel中的countif,其中if条件为'Right'。

我对pandas的理解是使用pd.rolling_sum()函数,但我不太确定如何在设置条件时分组并应用它。我也尝试使用cumcount()无效

df.groupby(['GameID','PlayerA']).Left_Right.cumcount()

最终,其中一个新列将如下所示。我不确定我在上面的函数中指定'Right'的位置。当我做了一个pd.rolling_sum时,我使用了一个班次,但我又找不到这个组合的地方。

pd.rolling_sum((df["Left_Right"] == "Right"), 10000000, min_periods=0).shift(1)


    Sequence GameID PlayerA PlayerB Left_Right  CountIf_Right
   0    1     101    334    326      Right          0  
   1    2     101    334    326      Right          1
   2    3     101    334    326      Left           2
   3    4     101    326    334      Left           0
   4    5     101    326    334      Right          0
   5    6     101    326    334      Left           1
   6    7     101    326    334      Right          1
   7    8     101    326    334      Right          2
   8    9     101    326    334      Left           3
   9    10    101    334    326      Left           2

因此,要浏览该列,它按游戏ID和播放器A分组,并且是条件为“正确”的滚动总和/标识。因此,在第1行中,在其上方的行中发生了0个权限。在第2行中,游戏中的玩家在其上方发生了1次。

非常感谢任何帮助

0 个答案:

没有答案