Объединение двух фреймов данных в одном столбце типа дает неверный результат - PullRequest
0 голосов
/ 08 октября 2019

У меня есть два кадра данных, предположим, A и B, которые были созданы после чтения листов файла Excel и выполнения некоторых основных функций. Мне нужно merge right два кадра данных в столбце с именем ID, который сначала был преобразован в astype(str) для обоих кадров данных.

Столбец идентификатора левого кадра данных (A):

0        5815518813016
1        5835503994014
2        5835504934023
3        5845535359006
4        5865520960012
5        5865532845006
6        5875531550008
7        5885498289039
8     5885498289039_A2
9     5885498289039_A3
10    5885498289039_X2
11    5885498289039_X3
12       5885509768698
13       5885522349999
14       5895507791025
Name: ID, dtype: object

Столбец идентификатора правого кадра данных (B):

0        5835503994014
1        5845535359006
2        5835504934023
3        5815518813016
4     5885498289039_A1
5     5885498289039_A2
6     5885498289039_A3
7     5885498289039_X1
8     5885498289039_X2
9     5885498289039_X3
10       5885498289039
11       5865532845006
12       5875531550008
13       5865520960012
14       5885522349998
15       5895507791025
16       5885509768698
Name: ID, dtype: object

Однако, когда я объединяю эти два, остальные столбцы левого (A) кадра данных становятся «пустыми» (np.nan) за исключением строк, в которых идентификатор содержит не только цифры, но и буквы. Это pd.merge() Я делаю:

A_B=A.merge(B[['ID','col_B']], left_on='ID', right_on='ID', how='right')

У вас есть идеи, что может быть так неправильно? Ваш вклад ценный.

1 Ответ

1 голос
/ 08 октября 2019

Попробуйте превратить все значения в обоих столбцах в строки: A['ID'] = A['ID'].astype(str) B['ID'] = B['ID'].astype(str)

Как правило, когда такое слияние не работает, я бы попытался отладить, распечатав уникальные значения в каждомстолбец, чтобы проверить, появляется ли что-нибудь (обычно проблемы dtype).

...