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

如何对两个pandas DataFrame进行透视后合并,为df_a新增匹配列

你之前用错了函数,pivot() 是用来把长表转为宽表的,你要把宽表结构的df_b转为和df_a一致的长表结构,应该用melt()函数,完整实现步骤如下:

  1. (可选但推荐)统一两个DataFrame的日期格式,避免字符串格式的日期匹配出错:
import pandas as pd
df_a['DateField'] = pd.to_datetime(df_a['DateField'])
df_b['DateField'] = pd.to_datetime(df_b['DateField'])
  1. 用melt()把df_b转为和df_a结构匹配的长表:
df_b_long = df_b.melt(
    id_vars='DateField',  # 保留DateField作为匹配键不展开
    var_name='Team',      # 原df_b的Team1~Team5列名,转换为Team列的取值
    value_name='ThirdVal' # 原df_b的数值统一归集到ThirdVal列
)
  1. 通过左连接把匹配到的ThirdVal合并到df_a中:
df_a = df_a.merge(df_b_long, on=['DateField', 'Team'], how='left')

如果存在df_a里的日期+团队组合在df_b中不存在的情况,对应的ThirdVal会自动填充为NaN,你可以根据实际需求后续处理空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 10:54:01