如何用Pandas合并含同含义不同表头列的两个CSV文件
解决CSV合并后保留重复连接键列的问题
我来帮你搞定这个问题!你遇到的核心问题是pd.merge()在使用left_on和right_on指定不同名称的连接键时,默认会同时保留这两个键列,所以才会出现id和user_id并存的情况。这里有两种简单有效的解决方案:
方法一:合并前重命名匹配列
提前把b.csv里的user_id重命名为id,这样就可以直接用on='id'进行合并,不会产生重复列:
import pandas as pd df1 = pd.read_csv('a.csv') df2 = pd.read_csv('b.csv') # 将df2的user_id列重命名为id df2.rename(columns={'user_id': 'id'}, inplace=True) # 基于统一的id列合并 df3 = pd.merge(df1, df2, on='id', how='outer') df3.to_csv('c.csv', index=False)
方法二:合并后删除重复列
如果不想修改原始的DataFrame结构,可以在合并完成后直接删除多余的user_id列:
import pandas as pd df1 = pd.read_csv('a.csv') df2 = pd.read_csv('b.csv') df3 = pd.merge(df1, df2, left_on=['id'], right_on=['user_id'], how='outer') # 删除重复的user_id列 df3.drop(columns=['user_id'], inplace=True) df3.to_csv('c.csv', index=False)
两种方法都能得到你期望的结果:
id name country gender 1 Cyrus MY female 2 May US male
内容的提问来源于stack exchange,提问作者moshimoshi
相关产品推荐
相关产品推荐

