Почему возникла ошибка и как ее исправить? Ошибка возникла при слиянии двух 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 шт):
Судя по ошибке, во фреймах movies и ratings нет ни одного столбца с полностью совпадающим наименованием.
Наименование столбцов сравниваются как обычные строки в Python. Таким образом если у вас не совпадают регистры букв или присутствуют пробелы в имени - то и строки не будут совпадать.
Проверьте наименование столбцов в обеих фреймах:
print(movies.columns.to_list())
print(ratings.columns.to_list())
и обратите внимание на регистр букв и пробелы перед началом или в конце имени столбцов

