gpt4 book ai didi

python - 如何将每组的第一行作为 Pandas 数据框中同一组中其他行的总和?

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:09 25 4
gpt4 key购买 nike

假设我有一个如下所示的 Pandas 数据框:

    A   B   
0 67 1
1 78 1
2 53 1
3 44 1
4 84 1
5 2 2
6 63 2
7 13 2
8 56 2
9 24 2

我的目标是:

1) 根据B列对A列进行分组

2) 作为 groupby() 的结果,使每个形成的组的第一行成为该组所有其他行的总和。在这种情况下,第一行中的值将被总和覆盖。

我想要的输出是:

    A   B   
0 259 1
1 78 1
2 53 1
3 44 1
4 84 1
5 156 2
6 63 2
7 13 2
8 56 2
9 24 2

因此,第 1 组的第一行(根据 B 列分组),我们在 A 列中有 259,因为除了第一行之外,第 1 组的值是 78+53+44+84 = 259

对于第2组,第2组的第一行是156,因为63+13+56+24 = 156

我花了好几天时间想弄清楚如何做到这一点,最后我投降了,希望这个伟大社区中的某个人能提供帮助。

最佳答案

这是一种方法:

grp = df.groupby('B')

方法一(类似于@Kent删掉的回答):

s=grp['A'].transform('sum').sub(df['A'])
idx=grp.head(1).index
df.loc[idx,'A']=s

方法二:

v= [g.iloc[1:].groupby('B')['A'].sum().iat[0] for _,g in grp]
idx = grp.head(1).index
df.loc[idx,'A'] = v

print(df)

     A  B
0 259 1
1 78 1
2 53 1
3 44 1
4 84 1
5 156 2
6 63 2
7 13 2
8 56 2
9 24 2

关于python - 如何将每组的第一行作为 Pandas 数据框中同一组中其他行的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59341554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com