python - Pandas 中的累积总和从零开始,以除最后一个条目以外的所有组的总和结束

标签 python pandas pandas-groupby cumsum

在下面的数据框中,我想创建一个新列 C这将是 B 的累积和对于 A 中的每个组列,但这些总和必须从零开始,并且只添加值直到该组的倒数第二个条目。

  A B
0 1 5
1 1 6
2 2 3
3 2 4
4 2 5
5 3 2
5 3 7
6 4 3
所以,我的结果应该是:
  A B C
0 1 5 0
1 1 6 5
2 2 3 0
3 2 4 3
4 2 5 7
5 3 2 0
5 3 7 2
6 4 3 0
(我认为这个问题真的很明显,但不知何故我自己无法弄清楚,也无法在任何地方看到它。)

最佳答案

尝试:

df["C"] = df.groupby("A")["B"].transform(
    lambda x: x.shift().fillna(0).cumsum().astype(int)
)
print(df)
打印:
   A  B  C
0  1  5  0
1  1  6  5
2  2  3  0
3  2  4  3
4  2  5  7
5  3  2  0
5  3  7  2
6  4  3  0

关于python - Pandas 中的累积总和从零开始,以除最后一个条目以外的所有组的总和结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69092524/

相关文章:

python - 根据另一列的值从一列中提取模式

python - 从 DataFrame 行元素生成元组

Pandas:将列添加到多索引列数据框中

python - 错误 : unhashable type: 'list' . 使用 df.groupby.apply 时

python - 根据模式过滤 pandas 系列

python - Wordnet 同义词不返回所有值 nltk

python - 为共享服务器上的 http 请求定义 PYTHONPATH

python - Pandas 将字符串对象转换为小写并检查字符串

python - Pandas 中的 Groupby 和插值

python - 如何将组添加到groupby