Почему возникла ошибка и как ее исправить? Ошибка возникла при слиянии двух pandas.core.frame.DataFrame объектов

Код:

import pandas as pd
movies = pd.read_csv('movies.csv')
ratings = pd.read_csv('ratings.csv')
new = pd.merge(movies, ratings)

Ошибка:

MergeError                                Traceback (most recent call last)
<ipython-input-34-b5ffdd7d4ca1> in <module>
  2 movies = pd.read_csv('movies.csv')
  3 ratings = pd.read_csv('ratings.csv')
----> 4 new = pd.merge(movies, ratings)

D:\Anaconda\lib\site-packages\pandas\core\reshape\merge.py in merge(left, right, how, on, 
left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)
 72     validate=None,
 73 ) -> "DataFrame":
---> 74     op = _MergeOperation(
 75         left,
 76         right,

D:\Anaconda\lib\site-packages\pandas\core\reshape\merge.py in __init__(self, left, right, how, 
on, left_on, right_on, axis, left_index, right_index, sort, suffixes, copy, indicator, 
validate)
648             warnings.warn(msg, UserWarning)
649 
--> 650         self._validate_specification()
651 
652         cross_col = None

D:\Anaconda\lib\site-packages\pandas\core\reshape\merge.py in _validate_specification(self)
1281                 common_cols = left_cols.intersection(right_cols)
1282                 if len(common_cols) == 0:
-> 1283                     raise MergeError(
1284                         "No common columns to perform merge on. "
1285                         f"Merge options: left_on={self.left_on}, "

MergeError: No common columns to perform merge on. Merge options: left_on=None, right_on=None, 
left_index=False, right_index=False

Что из себя представляет movies:

введите сюда описание изображения

Что представляет из себя ratings:

введите сюда описание изображения

У movies и ratings есть общий столбец MovieID, поэтому в теории они должны сливаться, но выдает ошибку(написанную выше). Вот еще информация если поможет: Изначально файлы movies.csv и ratings.csv были с расширением .dat (movies.dat и ratings.dat), но при их чтении таблица состояла из одного столбца, поэтому я дал им расширение .csv и немного подредактировал. PS: Если нужна еще информация - предоставлю


Ответы (1 шт):

Автор решения: MaxU

Судя по ошибке, во фреймах movies и ratings нет ни одного столбца с полностью совпадающим наименованием.

Наименование столбцов сравниваются как обычные строки в Python. Таким образом если у вас не совпадают регистры букв или присутствуют пробелы в имени - то и строки не будут совпадать.

Проверьте наименование столбцов в обеих фреймах:

print(movies.columns.to_list())
print(ratings.columns.to_list())

и обратите внимание на регистр букв и пробелы перед началом или в конце имени столбцов

→ Ссылка