Como corrigir: você está tentando mesclar colunas object e int64


Um erro que você pode encontrar ao usar pandas é:

 ValueError : You are trying to merge on int64 and object columns.
            If you wish to proceed you should use pd.concat

Este erro ocorre quando você tenta mesclar dois DataFrames do pandas, mas a coluna que você está mesclando é um objeto em um DataFrame e um número inteiro no outro DataFrame.

O exemplo a seguir mostra como corrigir esse erro na prática.

Como reproduzir o erro

Digamos que criamos os dois DataFrames panda a seguir:

 import pandas as pd

#createDataFrame
df1 = pd. DataFrame ({' year ': [2015, 2016, 2017, 2018, 2019, 2020, 2021],
                    ' sales ': [500, 534, 564, 671, 700, 840, 810]})

df2 = pd. DataFrame ({' year ': ['2015', '2016', '2017', '2018', '2019', '2020', '2021'],
                    ' refunds ': [31, 36, 40, 40, 43, 70, 62]})

#view DataFrames
print (df1)

   year sales
0 2015 500
1 2016 534
2 2017 564
3 2018 671
4 2019 700
5,2020 840
6 2021 810

print (df2)

   year refunds
0 2015 31
1 2016 36
2 2017 40
3 2018 40
4 2019 43
5 2020 70
6 2021 62

Agora suponha que tentamos mesclar os dois DataFrames:

 #attempt to merge two DataFrames
big_df = df1. merge (df2, on=' year ', how=' left ')

ValueError : You are trying to merge on int64 and object columns.
            If you wish to proceed you should use pd.concat

Recebemos um ValueError porque a variável ano no primeiro DataFrame é um número inteiro, mas a variável ano no segundo DataFrame é um objeto.

Como corrigir o erro

A maneira mais fácil de corrigir esse erro é simplesmente converter a variável ano do segundo DataFrame em um número inteiro e depois fazer a mesclagem.

A sintaxe a seguir mostra como fazer isso:

 #convert year variable in df2 to integer
df2[' year ']=df2[' year ']. astype (int)

#merge two DataFrames
big_df = df1. merge (df2, on=' year ', how=' left ')

#view merged DataFrame
big_df

	year sales refunds
0 2015 500 31
1 2016 534 36
2 2017 564 40
3 2018 671 40
4 2019 700 43
5 2020 840 70
6 2021 810 62

Observe que não recebemos nenhum ValueError e conseguimos mesclar com sucesso os dois DataFrames em um.

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:

Como corrigir: as colunas se sobrepõem, mas nenhum sufixo é especificado
Como corrigir: o objeto ‘numpy.ndarray’ não possui um atributo ‘append’
Como corrigir: se você usar todos os valores escalares, precisará passar um índice

Add a Comment

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