Como corrigir: as colunas se sobrepõem, mas nenhum sufixo é especificado
Um erro que você pode encontrar ao usar pandas é:
ValueError : columns overlap but no suffix specified: Index(['column'], dtype='object')
Este erro ocorre quando você tenta unir dois quadros de dados que compartilham pelo menos um nome de coluna comum e nenhum sufixo é fornecido para o quadro de dados esquerdo ou direito para distinguir as colunas no novo quadro de dados.
Existem duas maneiras de corrigir esse erro:
Solução 1: forneça nomes de sufixos.
df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ')
Solução 2: use a função de mesclagem.
df1. merge (df2, how = ' left ')
O exemplo a seguir mostra como corrigir esse erro na prática.
Como reproduzir o erro
Suponha que estejamos tentando reunir os dois quadros de dados a seguir:
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')
Recebemos um erro porque os dois quadros de dados compartilham a coluna “player”, mas nenhum sufixo é fornecido para o quadro de dados esquerdo ou direito para distinguir as colunas do novo quadro de dados.
Como corrigir o erro
Uma maneira de corrigir esse erro é fornecer um nome de sufixo para o quadro de dados esquerdo ou direito:
#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
Outra maneira de corrigir esse erro é simplesmente usar a função merge() , que não encontra esse problema ao unir dois quadros de dados:
#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
Observe que a função merge() simplesmente remove todos os nomes do segundo quadro de dados que já pertencem ao primeiro quadro de dados.
Recursos adicionais
Como mesclar dois DataFrames Pandas no índice
Como mesclar Pandas DataFrames em várias colunas
Como adicionar um array Numpy a um DataFrame do Pandas