求和,而另一列的值不变

时间:2019-06-19 13:51:30

标签: python pandas dataframe

如何计算一列的值之和,而另一列的值不变?

示例:

df.A

0   |  A   |  2 
1   |  A   |  1 
2   |  A   |  3 
3   |  B   |  22 
4   |  A   |  0
5   |  B   |  8

我想要的是一个新列:

                  |  cum.sum
0   |  A   |  2   |    6   (=2+1+3+0)
1   |  A   |  1   |    6
2   |  A   |  3   |    6
3   |  B   |  22  |    31  (=22+8)
4   |  A   |  0   |    6
5   |  B   |  8   |    6

1 个答案:

答案 0 :(得分:0)

示例中的输出似乎是简单的sum而不是cumsum,在这种情况下为:

df["C"] = df.groupby("A")["B"].transform("sum")

但是,如果您希望使用cumsum,则只需切换函数名称即可:

df["C"] = df.groupby("A")["B"].transform("cumsum")

(sum为DataFrame中A的每一行提供相同的输出,而cumsum给出直至当前行(包括当前行)的A的总数。)