【问题标题】:Merge returns empty dataframe in pandas合并在熊猫中返回空数据框
【发布时间】:2018-10-11 15:32:56
【问题描述】:

我在 Windows 10 上运行 Python 3.6。

我的代码如下:

data1
     Loan_ID    Gender
1   LP001003    Male
2   LP001005    Male
3   LP001006    Male
4   LP001008    Male
5   LP001011    Male

data2
    Loan_ID2    LoanAmount
1   LP001003    128.0
2   LP001005    66.0
3   LP001006    120.0
4   LP001008    141.0
5   LP001011    267.0

data_merged = data1.merge(right= data2, how='inner',left_on='Loan_ID', right_on = 'Loan_ID2',right_index=True, sort=False)

data_merged.shape
(0, 4)

【问题讨论】:

    标签: python pandas merge


    【解决方案1】:

    merge 中不需要right_index

    df1.merge(df2,left_on='Loan_ID',right_on='Loan_ID2')
    Out[54]: 
        Loan_ID Gender  Loan_ID2  LoanAmount
    0  LP001003   Male  LP001003       128.0
    1  LP001005   Male  LP001005        66.0
    2  LP001006   Male  LP001006       120.0
    3  LP001008   Male  LP001008       141.0
    4  LP001011   Male  LP001011       267.0
    

    【讨论】:

    • 能否解释一下为什么 right_index 会产生问题?
    • @user8270077 当您进行合并并输入 right_index 时,您是 使用左侧 DataFrame 中的索引作为连接键。
    【解决方案2】:

    尝试在data2 中重命名您的列,这将简化您的合并代码。

    data1.merge(data2.rename(columns={'Loan_ID2' : 'Loan_ID'}), on='Loan_ID')
    
        Loan_ID Gender  LoanAmount
    0  LP001003   Male       128.0
    1  LP001005   Male        66.0
    2  LP001006   Male       120.0
    3  LP001008   Male       141.0
    4  LP001011   Male       267.0
    

    【讨论】:

      【解决方案3】:

      只需删除right_index 部分:

      data_merged = pd.merge(data1, data2, how='inner',left_on='Loan_ID', right_on = 'Loan_ID2', sort=False)
      

      【讨论】:

        猜你喜欢
        • 2022-07-22
        • 1970-01-01
        • 1970-01-01
        • 2013-09-26
        • 1970-01-01
        • 2017-10-14
        • 2022-06-23
        • 2014-07-02
        相关资源
        最近更新 更多