【发布时间】:2020-07-26 12:14:00
【问题描述】:
我正在合并 5 个文件。每个文件都有某些列名,这些列名在其他文件中是相同的。我使用this answer 来执行concat 操作。在所有文件中有一列是唯一的,即 ID。当我合并列时,我注意到后缀(_x,_y)被应用于列名的末尾(由于合并功能),这些列名重复。如何将这些列合并为一列(不考虑空值)。
例如:
Dataframe 1
ID Name Age LAN_NBR
1 ABC 24 G284992
Dataframe 2
ID Name Street City State TYPE
2 John Wacker Chicago IL HUB
Dataframe 3
ID CLOSE_DATE TYPE
3 1/1/2021 HUB
Dataframe 4
ID TYPE LAN_NBR
1 HUB G284992
预期输出
ID Name Age LAN_NBR Street City State TYPE CLOSE_DATE
1 ABC 24 G284992 HUB
2 John Wacker Chicago IL HUB
3 HUB 1/1/2021
代码
obj1=pd.read_excel("file1.xlsx")
obj2=pd.read_excel("file2.xlsx")
obj3=pd.read_excel("file3.xlsx")
obj4=pd.read_excel("file4.xlsx")
obj5=pd.read_excel("file5.xlsx")
obj1_ID=pd.DataFrame(obj1["ID"])
obj2_ID=pd.DataFrame(obj2["ID"])
obj3_ID=pd.DataFrame(obj3["ID"])
obj4_ID=pd.DataFrame(obj4["ID"])
obj5_ID=pd.DataFrame(obj5["ID"])
concat_pd=[obj1_ID,obj2_ID,obj3_ID,obj4_ID,obj5_ID]
obj_final=pd.concat(concat_pd).fillna('')
obj_final.obj_final.drop_duplicates(subset='ID',keep='first')
merge1=pd.merge(left=obj_final, right=obj1, on="ID", how="left")
merge1=pd.merge(left=obj_final, right=obj2, on="ID", how="left")
merge1=pd.merge(left=obj_final, right=obj3, on="ID", how="left")
merge1=pd.merge(left=obj_final, right=obj4, on="ID", how="left")
merge1=pd.merge(left=obj_final, right=obj5, on="ID", how="left")
【问题讨论】:
-
您可以设置
suffix = (None, "_drop"),然后将最终数据框重新索引到其他数据框列名的并集。
标签: python pandas numpy dataframe merge