首页 > 解决方案 > 加入两个 Pandas 数据框,在特定列中保留特定字符串

问题描述

我有两个数据框,我正在尝试合并/加入/连接(我不确定正确的术语)。我不关心索引。ID 是每一行的唯一标识符。有很多数据列(此处简化为 AD),但对于每个唯一 ID,数据列之间的数据列将是相同的,但最终的 QC 列除外。

我想加入这两个数据框,这样当有重复的条目(由 ID 列中的重复确定)时,保留大多数行的任何实例(第一个或最后一个),但为 QC_1 和 QC_2 保留的值是实际上有一个值(在这种情况下,我使用了字符串 'Fail' 但我可以切换到 Bool 并保持 True 如果这使这更容易)。

我已经尝试过.merge 和.join 的迭代。我得到的最接近的是 .concat 或 .append 但是我不知道如何将重复的行合并为一个。从本质上讲,我不知所措。

df1

Index  ID    A     B     C     D    QC_1  
   3    13   10    15    17    100   Fail 
   4    17   20    25    27    110   Fail 
   7    42   30    35    37    120   Fail  
   12   115  40    45    47    130   Fail 

df2

Index  ID    A     B     C     D    QC_2 
   2    6    11    16    18    101   Fail 
   4    17   20    25    27    110   Fail 
   7    42   30    35    37    120   Fail 
   13   152  41    46    48    131   Fail  

目标

Index  ID    A     B     C     D    QC_1  QC_2
   3    13   10    15    17    100   Fail   NaN
   4    17   20    25    27    110   Fail   Fail
   7    42   30    35    37    120   Fail   Fail
   12   115  40    45    47    130   Fail   NaN
   2    6    11    16    18    101   NaN   Fail 
   13   152  41    46    48    131   NaN   Fail 

标签: pythonpandas

解决方案


使用combine_first

print (df1.set_index("ID").combine_first(df2.set_index("ID")).reset_index())

    ID     A     B     C      D  Index  QC_1  QC_2
0    6  11.0  16.0  18.0  101.0    2.0   NaN  Fail
1   13  10.0  15.0  17.0  100.0    3.0  Fail   NaN
2   17  20.0  25.0  27.0  110.0    4.0  Fail  Fail
3   42  30.0  35.0  37.0  120.0    7.0  Fail  Fail
4  115  40.0  45.0  47.0  130.0   12.0  Fail   NaN
5  152  41.0  46.0  48.0  131.0   13.0   NaN  Fail

推荐阅读