Я пытаюсь объединить два кадра данных в общий столбец "длинное_имя". Но слияние не происходит для некоторых имен, даже если они выглядят как визуально точные совпадения (ie «Лионель Андрес Месси Куччиттини» (df1) - «Лионель Андрес Месси Куччиттини» (df2)), когда я объединяю «long_name»:
df_merged = df.merge(df1, on="long_name", indicator=True, how='right')
Лионель Месси пропущен и, согласно столбцу индикатора, он является строкой "right_only" после слияния. Странно, что «Неймар да Сильва Сантос Жуниор» сливается. Почему между строками есть расхождение? Оба были получены последовательно: df из kaggle и df2 из списков и с использованием одного и того же сценария для всех извлеченных имен строк.
Я попытался изолировать обе записи Lionel Messi от df и df1, используя следующий код:
name1 = df.loc[df.short_name == 'L. Messi', ["long_name"]]
name2 = df1.loc[df1.name == 'Lionel Messi', ["long_name"]]
name1.values == name2.values
Но результат array([[False]])
. Я не уверен, почему они не совпадают.
Первый df выглядит так (первые 8 строк, df = df.loc[0:7,["short_name", "long_name"]]
):
short_name long_name
0 L. Messi Lionel Andrés Messi Cuccittini
1 Cristiano Ronaldo Cristiano Ronaldo dos Santos Aveiro
2 Neymar Jr Neymar da Silva Santos Junior
3 J. Oblak Jan Oblak
4 E. Hazard Eden Hazard
5 K. De Bruyne Kevin De Bruyne
6 M. ter Stegen Marc-André ter Stegen
7 V. van Dijk Virgil van Dijk
Второй df выглядит так ( первые 8 строк, df1 = df1.loc[0:7,["name", "long_name"]]
):
name long_name
0 Kylian Mbappé Kylian Sanmi Mbappé Lottin
1 Neymar Neymar da Silva Santos Júnior
2 Mohamed Salah محمد صلاح
3 Harry Kane Harry Edward Kane
4 Eden Hazard Eden Michael Hazard
5 Lionel Messi Lionel Andrés Messi Cuccitini
6 Raheem Sterling Raheem Shaquille Sterling
7 Antoine Griezmann Antoine Griezmann