如何匹配两个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
相关产品推荐
相关产品推荐

