Come risolvere il problema: stai tentando di unire le colonne object e int64


Un errore che potresti riscontrare quando usi i panda è:

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

Questo errore si verifica quando si tenta di unire due DataFrame panda ma la colonna su cui si sta unendo è un oggetto in un DataFrame e un numero intero nell’altro DataFrame.

L’esempio seguente mostra come correggere questo errore nella pratica.

Come riprodurre l’errore

Diciamo di creare i seguenti due DataFrames panda:

 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

Supponiamo ora di provare a unire i due DataFrame:

 #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

Riceviamo un ValueError perché la variabile year nel primo DataFrame è un numero intero ma la variabile year nel secondo DataFrame è un oggetto.

Come correggere l’errore

Il modo più semplice per correggere questo errore è semplicemente convertire la variabile anno del secondo DataFrame in un numero intero e quindi eseguire l’unione.

La seguente sintassi mostra come eseguire questa operazione:

 #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

Tieni presente che non riceviamo alcun ValueError e riusciamo a unire con successo i due DataFrame in uno solo.

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in Python:

Come risolvere il problema: le colonne si sovrappongono ma non è specificato alcun suffisso
Come risolvere il problema: l’oggetto “numpy.ndarray” non ha un attributo “append”.
Come risolvere il problema: se utilizzi tutti i valori scalari, devi passare un indice

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *