【问题标题】:Join one column of a dataframe with another dataframe based on a condition根据条件将数据框的一列与另一个数据框连接
【发布时间】:2020-01-11 13:13:03
【问题描述】:

我有 2 个数据框,df1 和 df2,如下所示:

df1:

     Name          Code          Title_num
 0  Title_1        0             TN_1234_4687
 1  Title_2        0             TN_1234_7053
 2  off_1          18301         TN_1234_1915
 3  off_2          18302         TN_1234_7068
 4  off_3          18303         TN_1234_1828

df2:

     A_Code     T_Code
 0  000000086   18301   
 1  000000126   18302   
 2  000001236   18303   
 3  000012346   18938   
 4  000123456   18910   
 5  000123457   18301

df2 中的 T_code 与 df1 中的代码相同。我想将 df1 中的 Title_num 列加入 df2。

例如,如果 df2 中的“T_Code”与 df1 中的“code”匹配,我希望将 df1['Title_num'] 列中的值连接到 df2。如果该值不存在,则应填充 NaN。

预期输出(加入后的df2):

    A_Code      T_Code   Title_num
 0  000000086   18301    TN_1234_1915
 1  000000126   18302    TN_1234_7068
 2  000001236   18303    TN_1234_1828
 3  000012346   18938    NaN
 4  000123456   18910    NaN
 5  000123457   18301    TN_1234_1915

为此,我将 df1 中的列代码重命名为“T_code”,以匹配 df2 上的名称。然后我运行以下代码:

 df2.merge(df1,on='T-Code',how='left')

这给出了以下错误:'T_code' # 检查重复项

现在,需要注意的一点是,在 df2 中,会存在重复的 T_codes,而在 df1 中,代码是唯一的。我希望 df2 中的 Title_num 值始终根据 T_code 值出现 [检查预期输出的第 5 行。 T_code 值与第 1 行相同]。

请告诉我执行此操作的方法。非常感谢任何帮助!

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    你好这个问题已经回答了 here.

    祝你好运。

    【讨论】:

      【解决方案2】:

      我最终这样做了:

      df2=pd.merge(df2, df1,left_on='T_Code', right_on='Code', how='left')
      df2.drop(columns =['Name', 'Code']) 
      

      【讨论】:

        猜你喜欢
        • 2014-10-20
        • 2022-10-14
        • 1970-01-01
        • 2021-09-08
        • 2019-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多