Python Pandas如何匹配两列条件并按分组对第三列求和
场景1:一次性统计所有艺术家对应各流派的总成本
直接用groupby对两个字段分组聚合即可,代码如下:
# 分组统计,输出包含Artist、Genre、Total Cost三列的完整结果表 result_all = df.groupby(['Artist', 'Genre'])['Cost'].sum().reset_index(name='Total Cost')
输出结果会包含所有艺术家和对应流派的总成本汇总,你可以直接从这个表里筛选任意艺术家的数据。
场景2:单独查询指定艺术家(以Beethoven为例)的各流派总成本
可以先过滤出目标艺术家的数据,再按流派分组求和:
# 先筛选Beethoven的所有数据,再按Genre分组统计Cost总和 beethoven_result = df[df['Artist'] == 'Beethoven'].groupby('Genre')['Cost'].sum().reset_index(name='Total Cost')
运行以上代码得到的beethoven_result就和你给出的预期输出完全一致。
补充:多条件直接查询特定组合的总成本
如果你需要直接计算某一个艺术家+流派组合的总成本,可以用多条件的loc查询,注意多个判断条件需要用括号包裹,逻辑与用&连接:
# 示例:计算Beethoven的Classical流派总成本 beethoven_classical_total = df.loc[(df['Artist'] == 'Beethoven') & (df['Genre'] == 'Classical'), 'Cost'].sum()
内容的提问来源于stack exchange,提问作者user8738575
相关产品推荐
相关产品推荐

