是否可以根据.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来获得相同的输出(如上所示)?
我更喜欢这种格式,因为我可以轻松地重命名列并添加其他操作,例如求和和平均值
非常感谢
答案 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'))