我正在尝试基于一个公共列合并多个 DataFrame。这将在循环中完成,原始 DataFrame 可能没有所有列,因此需要外部合并。但是,当我对几个不同的 DataFrames 列重复后缀 _x 和 _y 执行此操作时。我正在寻找一个 DataFrame,其中填充了数据,并且仅在以前不存在的情况下才添加列。
df1=pd.DataFrame({'Company Name':['A','B','C','D'],'Data1':[1,34,23,66],'Data2':[13,54,5354,443]})
Company Name Data1 Data2
0 A 1 13
1 B 34 54
2 C 23 5354
3 D 66 443
第二个 DataFrame 包含一些公司的附加信息:
pd.DataFrame({'Company Name':['A','B'],'Address': ['str1', 'str2'], 'Phone': ['str1a', 'str2a']})
Company Name Address Phone
0 A str1 str1a
1 B str2 str2a
如果我想将这两者结合起来,它将使用 on=Column 成功合并为一个:
df1=pd.merge(df1,df2, on='Company Name', how='outer')
Company Name Data1 Data2 Address Phone
0 A 1 13 str1 str1a
1 B 34 54 str2 str2a
2 C 23 5354 NaN NaN
3 D 66 443 NaN NaN
但是,如果我要在循环中再次执行相同的命令,或者如果我要与具有其他公司信息的另一个 DataFrame 合并,我最终会得到类似于以下内容的重复列:
df1=pd.merge(df1,pd.DataFrame({'Company Name':['C'],'Address':['str3'],'Phone':['str3a']}), on='Company Name', how='outer')
Company Name Data1 Data2 Address_x Phone_x Address_y Phone_y
0 A 1 13 str1 str1a NaN NaN
1 B 34 54 str2 str2a NaN NaN
2 C 23 5354 NaN NaN str3 str3a
3 D 66 443 NaN NaN NaN NaN
当我真正想要的是一个具有相同列的 DataFrame 时,只需填充任何缺失的数据。
Company Name Data1 Data2 Address Phone
0 A 1 13 str1 str1a
1 B 34 54 str2 str2a
2 C 23 5354 str3 str3a
3 D 66 443 NaN NaN
提前致谢。我已经回顾了之前在重复专栏上提出的问题,以及对 Pandas 文档的回顾,但没有任何进展。
守着星空守着你
慕容3067478
相关分类