【发布时间】:2018-07-23 11:53:59
【问题描述】:
在 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: function does not reduce”错误。
所以我有点不知所措。如何将sum 仅应用于AMOUNT 列,同时保留其他列?
【问题讨论】:
-
pandas 有一个内置的
first函数。你可以通过传递一个字符串来调用它。
标签: python pandas group-by sum