gpt4 book ai didi

python - 在数据框中对一列进行求和,同时保留其他列

转载 作者:行者123 更新时间:2023-11-30 22:20:51 24 4
gpt4 key购买 nike

在 pandas Dataframe df 中,我有这样的列:

    NAME    KEYWORD  AMOUNT  INFO
0 orange fruit 13 from italy
1 potato veggie 7 from germany
2 potato veggie 9 from germany
3 orange fruit 8 from italy
4 potato veggie 6 from germany

执行 groupby KEYWORD 操作时,我想计算每组 AMOUNT 值的总和并始终将第一个值与其他列保持一致,结果为:

    NAME    KEYWORD  AMOUNT  INFO
0 orange fruit 21 from italy
1 potato veggie 22 from germany

我试过了

df.groupby('KEYWORD).sum()

但这对所有列进行了“总结”,即我得到

    NAME                KEYWORD  AMOUNT  INFO
0 orangeorange fruit 21 from italyfrom italy
1 potatopotatopotato veggie 22 from germanyfrom germanyfrom germany

然后我尝试对不同的列使用不同的函数:

df.groupby('KEYWORD).agg({'AMOUNT': sum, 'NAME': first, ....})

def first(f_arg, *args):
return f_arg

但是不幸的是,这给了我一个“ValueError:函数不会减少”错误。

所以我有点不知所措。如何仅将 sum 应用于 AMOUNT 列,同时保留其他列?

最佳答案

使用groupby + agg使用自定义 aggfunc 字典。

f = dict.fromkeys(df.columns.difference(['KEYWORD']), 'first')
f['AMOUNT'] = sum

df = df.groupby('KEYWORD', as_index=False).agg(f)
df

KEYWORD NAME AMOUNT INFO
0 fruit orange 21 from italy
1 veggie potato 22 from germany

dict.fromkeys 为我提供了一种将其推广到 N 列的好方法。如果列顺序很重要,请添加 reindex最后的操作:

df = df.groupby('KEYWORD', as_index=False).agg(f).reindex(columns=df.columns)
df

NAME KEYWORD AMOUNT INFO
0 orange fruit 21 from italy
1 potato veggie 22 from germany

关于python - 在数据框中对一列进行求和,同时保留其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48761261/

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