我想知道如何合并/连接两个具有相似列和一些缺失值的数据框,同时仍然能够保留所有信息。我的数据框看起来与此类似:
df1
Item ID Order ID Name Location
21 1 John IL
22 2 John LA
24 2 Ron LA
25 3 Ron LA
29 5 John IL
df2
Item ID Order ID Name Location Type
20 1 John IL cable
22 2 Ron LA cable
23 2 Ron LA Box
26 3 Ron LA cable
27 N/A N/A IL Box
29 5 John IL Box
我希望我的数据框看起来像什么
Item ID Order ID Name Location Type
20 1 John IL Cable
21 4 John IL N/A
22 2 John/Ron LA Cable
23 2 Ron LA Box
24 2 Ron LA N/A
25 3 Ron LA N/A
26 3 Ron LA Cable
27 N/A N/A IL Box
28 N/A N/A N/A N/A
29 5 John IL Box
我尝试过做类似的事情
dataframes = [df1, df2]
merged = reduce(lambda left,right: pd.merge(left,right,on='Item ID', how='outer'), dataframes)
但它的排序是错误的,或者遗漏了一些信息,并且没有填写缺失的值(项目 ID:28)。
最佳答案
这可行
pd.concat([df1, df2]).sort_values('Item_ID').drop_duplicates(['Item_ID'], keep='last')
Item_ID Location Name Order_ID Type
0 20 IL John 1.0 cable
0 21 IL John 1.0 NaN
1 22 LA Ron 2.0 cable
2 23 LA Ron 2.0 Box
2 24 LA Ron 2.0 NaN
3 25 LA Ron 3.0 NaN
3 26 LA Ron 3.0 cable
4 27 IL NaN NaN Box
5 29 IL John 5.0 Box
关于python - 合并两个具有相似列的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59583936/