为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

浮云间 2021-08-11 17:40:55
我有一个数据框,我想在其中添加一个列,其中包含基于 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。非常感谢任何帮助,
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

我的猜测是你想要这个:


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


查看完整回答
反对 回复 2021-08-11
  • 1 回答
  • 0 关注
  • 313 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信