通过使用.agg(lambda)而不是.apply(lambda)重写组

时间:2019-05-16 12:58:29

标签: python-3.x pandas numpy lambda group-by

是否可以根据.agg重写下面的表达式?

我有

sampleGC.groupby(['prime_broker_id', 'country_name'], as_index=False).apply( lambda df, a, b: sum(df[a] * df[b]),'carry_rate', 'notional_current')

输出

prime_broker_id  country_name
CITI             AUSTRALIA       4.929853e+10
                 HONG KONG       2.565716e+11
                 INDONESIA       3.508484e+09
                 JAPAN           9.608675e+11
                 MALAYSIA        9.459922e+10
                 NEW ZEALAND     2.479546e+08

我想将其重写为:

sampleGC.groupby(['prime_broker_id', 'country_name'], as_index=False).agg(
        {"": lambda }

如何通过用.agg重写groupby来获得相同的输出(如上所示)? 我更喜欢这种格式,因为我可以轻松地重命名列并添加其他操作,例如求和和平均值

非常感谢

1 个答案:

答案 0 :(得分:1)

我相信您将可以通过以下方式做到这一点(在数据框中添加一个额外的计算列):

sampleGC['calculated'] = sampleGC['carry_rate'] * sampleGC['notional_current']

res = sampleGC.groupby(['prime_broker_id', 'country_name'], as_index=False).apply(lambda gb: gb['calculated'].agg('sum'))