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

如何匹配两个DataFrame对应值并合并生成新DataFrame?

实现方法

直接用Pandas的merge函数就能完成这个匹配需求,这是处理DataFrame关联匹配的常规方案。

核心思路

以df1的No1列和df2的No2列作为匹配键,因为题目明确df1的No1值全部存在于df2的No2中,使用默认的内连接(inner join)即可精准匹配对应行,最后移除多余的No2列即可得到目标结果。

代码示例

import pandas as pd

# 初始化两个DataFrame
df1 = pd.DataFrame({'ID1':['A','C'], 'ID2':['D','F'], 'No1':[2, 4]})
df2 = pd.DataFrame({'X':['X1','X2','X3','X4','X5'], 'Y':['Y1','Y2','Y3','Y4','Y5'], 'No2':[1,2,3,4,5]})

# 合并并清理列
df_new = pd.merge(df1, df2, left_on='No1', right_on='No2').drop('No2', axis=1)

# 若需要转换成题目示例的列表格式
df_new_list = df_new.values.tolist()
print(df_new_list)

运行后输出的df_new_list即为:

[['A', 'D', 2, 'X2', 'Y2'], ['C', 'F', 4, 'X4', 'Y4']]

优化写法(可选)

如果想提前过滤df2的列,避免后续删除操作,可以直接指定要合并的列:

df_new = pd.merge(df1, df2[['X', 'Y', 'No2']], left_on='No1', right_on='No2').drop('No2', axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:37:36