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

如何用Python Pandas基于双键交集合并不同长度的CSV文件?

用Pandas合并不同长度的CSV,基于多列匹配生成目标文件

嘿,这个需求用Pandas的merge功能就能轻松实现,哪怕两个DataFrame长度不一样也完全没问题!我给你一步步拆解操作:

步骤1:导入Pandas并读取CSV文件

首先咱们得把两个CSV文件读成DataFrame,注意你的CSV列名里带了空格(比如ID1 , att1 , att2),所以读取的时候加上skipinitialspace=True,自动去掉列名里的多余空格,避免后续匹配出错:

import pandas as pd

# 读取两个CSV文件,处理列名中的空格
df1 = pd.read_csv('one.csv', skipinitialspace=True)
df2 = pd.read_csv('two.csv', skipinitialspace=True)

步骤2:基于att1和att2做内连接匹配

用merge方法,指定匹配的键是att1和att2,并且用how='inner'——这个参数的作用就是只保留两边同时存在匹配项的行,完美符合你“仅保留att1和att2值相同的条目”的需求,不管两个DataFrame长度差多少都不影响:

# 内连接,基于att1和att2匹配
merged_df = pd.merge(df1, df2, on=['att1', 'att2'], how='inner')

步骤3:调整列的顺序

默认merge后的列顺序是ID1, att1, att2, ID2,咱们把它改成你想要的ID1, ID2, att1, att2:

# 重新排列列
final_df = merged_df[['ID1', 'ID2', 'att1', 'att2']]

步骤4:保存为目标CSV文件

最后把处理好的DataFrame保存成three.csv,记得加index=False,不然会多出一列索引:

final_df.to_csv('three.csv', index=False)

完整代码

把上面的步骤整合起来就是完整的代码啦:

import pandas as pd

# 读取CSV
df1 = pd.read_csv('one.csv', skipinitialspace=True)
df2 = pd.read_csv('two.csv', skipinitialspace=True)

# 内连接匹配
merged_df = pd.merge(df1, df2, on=['att1', 'att2'], how='inner')

# 调整列顺序并保存
final_df = merged_df[['ID1', 'ID2', 'att1', 'att2']]
final_df.to_csv('three.csv', index=False)

运行之后生成的three.csv就是你想要的格式啦,测试你的示例数据,输出正好是:

ID1,ID2,att1,att2
a1,E3,b1,c1
a2,E2,b2,c2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:26:31