猿问

具有 2 个或更多变量的 python pandas lambda

我有一个数据框,我想在其中添加一个列,其中包含基于 2(可能是 3)个不同列中的条件的值的条件总和。我正在尝试使用 lambda 函数,例如:


df['newColumn'] = df[['colA','colB']].apply(lambda x,y: 

df.loc[df['colA']==x].loc[df['colB']==y]['Total Amount'].sum())

这种方法不起作用,尽管当我单独测试 .loc 语句并使用值代替 x 和 y 时,我确实得到了正确的总和。如果可能的话,我想引入另一列。我得到的错误是:“()缺少 1 个必需的位置参数:'y'”,'发生在索引 colA。非常感谢任何帮助,


浮云间
浏览 314回答 1
1回答

Helenr

我的猜测是你想要这个:df = pd.DataFrame({'A': [1,1,2,2,3,3],                   'B': [2,2,2,3,3,3],                   'TotalAmount': [10,20,30,40,50,60]})df['NewColumn'] = df.groupby(['A', 'B'])['TotalAmount'].transform('sum')df#   A  B  TotalAmount  NewColumn#0  1  2           10         30#1  1  2           20         30#2  2  2           30         30#3  2  3           40         40#4  3  3           50        110#5  3  3           60        110
随时随地看视频慕课网APP

相关分类

Python
我要回答