Слияние возвращает пустой фрейм данных в пандах

Я запускаю Python 3.6 в Windows 10.

Мой код следующий:

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 есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
0
4 525
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуйте переименовать свой столбец в 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
Ответ принят как подходящий

Вам не нужен right_index в merge

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 01.05.2018 17:38

@ user8270077, когда вы выполняете слияние и набираете right_index, вы Используйте индекс из левого DataFrame в качестве ключа (ключей) соединения.

BENY 01.05.2018 17:40

Просто удалите часть right_index:

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

Другие вопросы по теме