【问题标题】:python pandas lambda with 2 and more variables [duplicate]python pandas lambda有2个及更多变量[重复]
【发布时间】:2019-04-11 22:57:03
【问题描述】:

我有一个数据框,我想根据 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。 非常感谢任何帮助,

【问题讨论】:

  • 你能添加一些示例数据和预期输出吗?

标签: python pandas lambda


【解决方案1】:

我猜你想要这个:

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

【讨论】:

  • @jezrael 我相信我应该得到破译分数:)
  • 谢谢! python 3 中有没有办法使用 lambda 表达式来做到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
相关资源
最近更新 更多