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

如何按时间筛选DataFrame片段后与另一DataFrame进行关联?

解决DataFrame左关联匹配需求

嘿,这事儿用pandas的左连接就能轻松搞定!你的需求本质是要保留left表的所有行,同时把right表中匹配ID的f2、f3字段补进来,没匹配上的就用NaN填充,正好对应左连接(left join)的特性。

步骤1:构造示例数据

先把你给出的数据集用代码还原出来:

import pandas as pd

left = pd.DataFrame({
    'ID': [1, 3, 7, 9, 2, 1, 3],
    'f1': [10]*7,
    'TIME': [1, 1, 1, 2, 2, 2, 2]
})

right = pd.DataFrame({
    'ID': [1, 7],
    'f2': [0, 9],
    'f3': [11, 11]
})

步骤2:执行左关联操作

直接用pd.merge()指定how='left',按ID字段匹配,就能得到你想要的结果:

result = pd.merge(left, right, on='ID', how='left')

验证结果

运行后输出的result完全符合你的期望:

IDf1TIMEf2f3
1101011
3101NaNNaN
7101911
9102NaNNaN
2102NaNNaN
1102011
3102NaNNaN

如果之后你需要先按TIME筛选left的子集再关联,也可以灵活调整,比如只保留TIME=1的数据:

filtered_left = left[left['TIME'] == 1]
result_filtered = pd.merge(filtered_left, right, on='ID', how='left')

这样就能轻松满足不同的筛选+关联需求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:14:23