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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *