错误原因
-
选择多个列的语法
df['column1', 'column2']
这是错误的。这应该是
df[['column1', 'column2']]
-
即使你使用
df[['column1','column2']]
对于
groupby
,熊猫会提出另一个错误,抱怨石斑鱼应该
one dimensional
.这是因为
df[['column1','column2']]
返回作为二维对象的数据帧。
如何修复错误?
艰难之路:
将每个分组列作为一维序列传递给
子句
df['new_column'] = (
df['value']
.where(df['value'] > 0)
.groupby([df['column1'], df['column2']]) # Notice the change
.transform('sum')
)
简单方法:
首先将屏蔽列的值指定给目标列,然后执行以下操作:
子句
+
transform
就像你通常做的那样
df['new_column'] = df['value'].where(df['value'] > 0)
df['new_column'] = df.groupby(['column1', 'column2'])['new_column'].transform('sum')