python - 合并两个具有相似列的数据框

标签 python pandas dataframe

我想知道如何合并/连接两个具有相似列和一些缺失值的数据框,同时仍然能够保留所有信息。我的数据框看起来与此类似:

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/

相关文章:

python - 如何在 Windows 上运行的 visualsvn 服务器预提交 Hook 中调用 python 脚本

python - 如何将 Pandas 数据框中的列拆分为字母值和数值?

python - 根据 Pandas 上的日期范围选择过滤 Excel 数据

python - 聚合 Pandas DataFrame 中的行

python - 如何使用 XlsxWriter 卡住顶行和第一列?

python - 将报告指标(数据库查询等)的 Django 性能测试套件

python - 使用调试运行 flask 时启动线程

python - 具有版本控制的 HDF5 文件 (h5py) - 每次保存时都会更改哈希值

r - 根据 R 中的条件向数据框添加多个新列

python - 为什么 Dask 数据帧到 pandas 数据帧的转换非常慢?