Python实现SumIf等效功能 完成DataFrame按条件分组聚合计算
你可以直接使用pandas的groupby + 命名聚合语法实现,无需多次分组再关联,两种常用的简洁写法如下:
写法1(直接聚合过滤)
res = df.groupby('Key', as_index=False).agg( Total_Amount=('Amount', 'sum'), Bitcoin_Amount=('Amount', lambda s: s[df.loc[s.index, 'Bitcoin'] == 1].sum()) )
写法2(预生成临时列,性能更优,适合大数据量)
res = df.assign(Bitcoin_Amount=df['Amount'] * df['Bitcoin']).groupby('Key', as_index=False).agg( Total_Amount=('Amount', 'sum'), Bitcoin_Amount=('Bitcoin_Amount', 'sum') )
两种写法都可以直接得到你需要的结果:对每个Key统计所有交易的总金额,同时统计Bitcoin标识为1的交易金额总和。
内容的提问来源于stack exchange,提问作者user14128401
相关产品推荐
相关产品推荐

