合并Pandas DataFrame并替换指定列的实现方法
解决方案
方法一:合并后清理列
先执行你原本的合并操作,再删除来自df1的C_x列,并将df2的C_y重命名为C:
import pandas as pd df1 = pd.DataFrame({'A':[3,5,2,5], 'B':['w','x','y','z'], 'C':['0','0','0','0']}) df2 = pd.DataFrame({'B':['w','x','y','z'],'C':['1','2','3','4'], 'D':[10,20,30,40]}) # 执行合并 merged_df = df1.merge(df2, how='outer', on='B') # 删除df1的C列,重命名df2的C列 merged_df = merged_df.drop('C_x', axis=1).rename(columns={'C_y': 'C'}) print(merged_df)
方法二:提前删除不需要的列(更高效)
既然你不需要df1的C列,直接先删除df1中的C列再合并,合并后不会产生重复的C列,一步到位:
import pandas as pd df1 = pd.DataFrame({'A':[3,5,2,5], 'B':['w','x','y','z'], 'C':['0','0','0','0']}) df2 = pd.DataFrame({'B':['w','x','y','z'],'C':['1','2','3','4'], 'D':[10,20,30,40]}) # 删除df1的C列后合并 merged_df = df1.drop('C', axis=1).merge(df2, how='outer', on='B') print(merged_df)
两种方法都能得到你期望的结果:
A B C D 0 3.0 w 1 10 1 5.0 x 2 20 2 2.0 y 3 30 3 5.0 z 4 40
内容的提问来源于stack exchange,提问作者HappyPy
相关产品推荐
相关产品推荐

