Слияние фреймов данных Pandas не работает должным образом с несколькими проверками равенства столбцов - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь выполнить слияние на основе того, что два столбца равны друг другу для двух кадров данных.

Вот код:

>>> df.merge(df1, how='left', left_on=['Name', 'Age'], right_on=['Name', 'Age'], suffixes=('', '_@'))
   Name  Age
0     1    2
1     3    4
2     4    5
>>> df
   Name  Age
0     1    2
1     3    4
0     4    5
>>> df1
   Name  Age
0     5    6
1     3    4
0     4    7

То, что я фактически ожидал от слияния, было

   Name  Age  Age_@
0     1    2    NaN
1     3    4    4.0
2     4    5    7.0

Почему панды думают, что для этого слияния есть все три совпадающие строки?

1 Ответ

1 голос
/ 06 мая 2019

То есть вы имеете в виду merge на Name верно?

df.merge(df1, how='left', on='Name', suffixes=('', '_@'))
Out[120]: 
   Name  Age  Age_@
0     1    2    NaN
1     3    4    4.0
2     4    5    7.0

Использование indicator, чтобы увидеть, что вы выводите

df.merge(df1, how='left', left_on=['Name', 'Age'], right_on=['Name', 'Age'], suffixes=('', '_@'),indicator=True)
Out[121]: 
   Name  Age     _merge
0     1    2  left_only
1     3    4       both
2     4    5  left_only

Поскольку у вас df и df1 одинаковые columns и все columns были использованы в качестве клавиши merge, поэтому нет других columns, указывающих, разделяют ли они одни и те же элементы в df или нет (поскольку вы используете left, так что по умолчанию показываются все оставшиеся элементы в результате).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...