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

Python中如何跨DataFrame按ID和日期匹配数据生成新列

pandas跨表匹配字段实现方案

核心思路

先将宽格式的df2转为按「ID+日期」唯一标识的长格式,再通过双字段匹配和df1合并即可。

实现代码

1. 宽表转长表

import pandas as pd

# 转换df2宽表为可匹配的长格式
df2_long = df2.melt(
    id_vars = ["ID", "City"],
    var_name = "Date",
    value_name = "New"
)

2. 双字段合并匹配

# 按ID和Date两个字段左连接,得到带New列的df1
df1 = df1.merge(
    df2_long[["ID", "Date", "New"]],
    on = ["ID", "Date"],
    how = "left"
)

可选:日期格式统一(避免字符串匹配异常)

如果两个表的日期存储格式有差异,先统一转成datetime类型再合并:

df1["Date"] = pd.to_datetime(df1["Date"], format="%d/%m/%Y")
df2_long["Date"] = pd.to_datetime(df2_long["Date"], format="%d/%m/%Y")

运行结果

最终得到的df1如下:

ID        Date  New
0   90  02/01/2021   14
1  101  01/01/2021   15
2   30  12/01/2021   13

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:24:01