Как исправить: столбцы перекрываются, но суффикс не указан
Ошибка, с которой вы можете столкнуться при использовании панд:
ValueError : columns overlap but no suffix specified: Index(['column'], dtype='object')
Эта ошибка возникает, когда вы пытаетесь объединить два фрейма данных, которые имеют хотя бы одно общее имя столбца, и для левого или правого фрейма данных не указан суффикс, позволяющий различать столбцы в новом фрейме данных.
Есть два способа исправить эту ошибку:
Решение 1. Укажите суффиксные имена.
df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ')
Решение 2. Вместо этого используйте функцию слияния.
df1. merge (df2, how = ' left ')
В следующем примере показано, как исправить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, мы пытаемся объединить следующие два фрейма данных:
import pandas as pd #create first data frame df1 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'], ' points ': [5, 7, 7, 9, 12, 9], ' assists ': [11, 8, 10, 6, 6, 5]}) #create second data frame df2 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'], ' rebounds ': [4, 4, 6, 9, 13, 16], ' steals ': [2, 2, 1, 4, 3, 2]}) #attempt to perform left join on data frames df1. join (df2, how = ' left ') ValueError : columns overlap but no suffix specified: Index(['player'], dtype='object')
Мы получаем ошибку, поскольку оба фрейма данных имеют общий столбец «игрок», но для левого или правого фрейма данных не предусмотрен суффикс, позволяющий различать столбцы нового фрейма данных.
Как исправить ошибку
Один из способов исправить эту ошибку — указать суффиксное имя для левого или правого фрейма данных:
#perform left join on data frames with suffix provided df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ') playerleft points assists playerright rebounds steals 0 A 5 11 A 4 2 1 B 7 8 B 4 2 2 C 7 10 C 6 1 3 D 9 6 D 9 4 4 E 12 6 E 13 3 5 F 9 5 F 16 2
Другой способ исправить эту ошибку — просто использовать функцию merge() , которая не сталкивается с этой проблемой при соединении двух фреймов данных:
#merge two data frames df1. merge (df2, how = ' left ') player points assists rebounds steals 0 A 5 11 4 2 1 B 7 8 4 2 2 C 7 10 6 1 3 D 9 6 9 4 4 E 12 6 13 3 5 F 9 5 16 2
Обратите внимание, что функция merge() просто удаляет из второго фрейма данных все имена, которые уже принадлежат первому фрейму данных.
Дополнительные ресурсы
Как объединить два фрейма данных Pandas в индексе
Как объединить фреймы данных Pandas по нескольким столбцам
Как добавить массив Numpy в DataFrame Pandas