Як виправити: стовпці перекриваються, але суфікс не вказано
Помилка, з якою ви можете зіткнутися під час використання панд:
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 DataFrames в індексі
Як об’єднати Pandas DataFrames у кількох стовпцях
Як додати масив Numpy до Pandas DataFrame