【问题标题】:Outer joining two dataframes using two fields as the key使用两个字段作为键的外部连接两个数据帧
【发布时间】:2020-05-02 21:34:39
【问题描述】:

我有 2 个数据框 df1 和 df2,它们看起来像:

df1

Code   ID       Dept Score Comp
AA   3456  Marketing     5    5
AV   3467    Finance     7    8
TG   5437      Admin     8    4
DF   3487    Finance     9    9

df2

ID          Dept   Pay
3467     Finance   YES    
5437       Admin    NO
9537  Operations   YES

我想使用 IDDept 字段(在两个数据帧中都存在)来连接两个数据帧以加入数据帧。这将产生以下所需的输出:

df1 + df2

   Code     ID       Dept Score Comp    ID       Dept   Pay
     AA   3456  Marketing     5    5   NaN        NaN   NaN
     AV   3467    Finance     7    8  3467    Finance   YES 
     TG   5437      Admin     8    4  5437      Admin    NO
     DF   3487    Finance     9    9   NaN        NaN   NaN
    NaN    NaN        NaN   NaN  NaN  9537 Operations   YES 

我看过尝试使用:

result = df1.append(df2, sort=False)

但看不到在加入表格时如何使用 IDDept 字段作为键。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    如果你想外连接使用merge:

    import pandas as pd
    pd.merge(df1, df2, how='outer', left_on=['ID','Dept'], right_on = ['ID','Dept'])
    

    pandas 文档中有关于此主题的一般准则: https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html

    【讨论】:

      【解决方案2】:

      您可以使用pd.merge 自动检测两个数据框中列的交集:

      df3 = pd.merge(df1, df2, how="outer")
      print(df3)
      
        Code    ID        Dept  Score  Comp  Pay
      0   AA  3456   Marketing    5.0   5.0  NaN
      1   AV  3467     Finance    7.0   8.0  YES
      2   TG  5437       Admin    8.0   4.0   NO
      3   DF  3487     Finance    9.0   9.0  NaN
      4  NaN  9537  Operations    NaN   NaN  YES
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-10
        • 2020-10-08
        • 1970-01-01
        • 2016-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多