首页 > 解决方案 > 合并数据框中的相同列

问题描述

我有两个数据框

第一个数据帧,df1

    UserMasterId    Status  Count
  0 1296.0               5  5
  1 1316.0               5  9
  2 1325.0               5  14
  3 1332.0               5  5
  4 1337.0               5  44
  5 1342.0               5  2
  6 1344.0               5  18

第二个数据帧,df2

    UserMasterId    Status  Count
  0 1325.0               0  2
  1 1332.0               0  1
  2 1337.0               0  1
  3 1342.0               0  3
  4 1344.0               0  1

在这里,我们在两个数据框中都有相同的 ID ..

当我使用Concat时,

result = pd.concat([df1, df2], axis=1, sort=True)
result

我得到的输出是,

    UserMasterId    Status  Count   UserMasterId    Status  Count
0   1296.0               5      5         1325.0       0.0    2.0
1   1316.0               5      9         1332.0       0.0    1.0
2   1325.0               5     14         1337.0       0.0    1.0
3   1332.0               5      5         1342.0       0.0    3.0
4   1337.0               5     44         1344.0       0.0    1.0
5   1342.0               5      2            NaN       NaN    NaN
6   1344.0               5     18            NaN       NaN    NaN

当我使用合并时,

result = pd.merge(df1,df2[['UserMasterId', 'Count','Status']],on='UserMasterId')
result.head()

输出是,

    UserMasterId    Status_x    Count_x Count_y Status_y
0         1325.0           5         14      2         0
1         1332.0           5          5      1         0
2         1337.0           5         44      1         0
3         1342.0           5          2      3         0
4         1344.0           5         18      1         0

这将删除 df1 和 df2 中不常见的 ID。

我不想删除两个数据框不通用的 ID。我想要这样的输出,

UserMasterId    Status_x    Count_x Count_y Status_y
0     1296.0           5          5      NA       NA
1     1316.0           5          9      NA       NA
2     1325.0           5         14      2         0
3     1332.0           5          5      1         0
4     1337.0           5         44      1         0
5     1342.0           5          2      3         0
6     1344.0           5         18      1         0

谁能帮我吗?

标签: pythonpandasdataframegroup-by

解决方案


使用带有外部连接的合并应该做得很好,对吧?但是我没有测试它

result = pd.merge(df1,df2[['UserMasterId', 'Count','Status']],on='UserMasterId', how='outer')

推荐阅读