KeyError: in Pandas



我正在尝试用多列、聚合列和聚合运算符运行groupby。

我将把以上所有内容作为方法的参数。我必须分组:

result = df.groupby([groupByColumns])[aggColumn].agg(aggOperation)

此处

groupByColumns: clientId,state,branchId
aggColumn: amount
aggOperator: sum

但是我收到这个错误

KeyError: ''

我在熊猫方面不好。我该如何更正我的上述陈述?

如果groupByColumns已经是一个列表,请删除groupby:中的[]

groupByColumns = ['clientId', 'state', 'branchId']
aggColumn = 'amount'
aggOperation = sum
out = df.groupby(groupByColumns)[aggColumn].agg(aggOperation)
# OR
out = df.groupby(['clientId', 'state', 'branchId'])['amount'].sum()
print(out)
# Output
clientId  state  branchId
A         M      X           3
N      Y           3
B         M      X           9
N      Y           6
Name: amount, dtype: int64

设置:

df = pd.DataFrame({'clientId': list('AAABBB'),
'state': list('MMNMMN'),
'branchId': list('XXYXXY'),
'amount': range(1, 7)})
print(df)
# Output
clientId state branchId  amount
0        A     M        X       1
1        A     M        X       2
2        A     N        Y       3
3        B     M        X       4
4        B     M        X       5
5        B     N        Y       6

groupby列需要输入参数中的1D列表。在您的情况下,您的groupByColumns是["clientId"、"state"、"branchId"],在使用groupby函数时,您使用的是list运算符,本质上使其成为长度为1的2d列表。这就是你的情况df.groupby([['clientId','state','branchId']](['amount'].sum((

解决方案根据@Corralien的回答,使用相同的命令,但不使用列表运算符,这样在groupby命令中,您将传递1d列表,它应该可以工作!

最新更新