You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas匹配两个DataFrame并按分类汇总各年度数值该如何实现?

匹配失败原因

df1.Thing.isin(df2)返回全False是因为isin()方法传入DataFrame时会按行匹配,而非遍历df2所有单元格匹配物品名称,所以无法得到预期结果。

实现步骤
  1. 转换df2为物品-品类映射表
    你当前的df2是宽表存储,需要先重塑为每行对应一个物品和其所属品类的长表结构:
# 融化df2,把所有物品列转成行,删除无物品的空值行
df2_long = df2.melt(id_vars=df2.columns[0], value_name="Thing").dropna(subset=["Thing"])
# 重命名品类列
df2_long = df2_long.rename(columns={df2.columns[0]: "品类"})
  1. 关联品类信息到df1
    把品类字段合并到存储年度数值的df1中:
df1 = df1.merge(df2_long[["品类", "Thing"]], on="Thing", how="left")
  1. 按品类分组汇总年度数值
    按品类维度分组,对各年度字段求和即可得到结果:
result = df1.groupby("品类")[["2010", "2011", "2012"]].sum()

得到的result就是你需要的输出格式,索引为品类名,列是各年度汇总值。

内容的提问来源于stack exchange,提问作者user13998985

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:15:08