Comment réparer : vous essayez de fusionner des colonnes objet et int64
Une erreur que vous pouvez rencontrer lors de l’utilisation de pandas est :
ValueError: You are trying to merge on int64 and object columns.
If you wish to proceed you should use pd.concat
Cette erreur se produit lorsque vous tentez de fusionner deux DataFrames pandas mais que la colonne sur laquelle vous fusionnez est un objet dans un DataFrame et un entier dans l’autre DataFrame.
L’exemple suivant montre comment corriger cette erreur dans la pratique.
Comment reproduire l’erreur
Supposons que nous créions les deux DataFrames pandas suivants :
import pandas as pd #create DataFrame 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
Supposons maintenant que nous tentions de fusionner les deux 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
Nous recevons une ValueError car la variable année dans le premier DataFrame est un entier mais la variable année dans le deuxième DataFrame est un objet.
Comment réparer l’erreur
Le moyen le plus simple de corriger cette erreur consiste simplement à convertir la variable d’année du deuxième DataFrame en un entier, puis à effectuer la fusion.
La syntaxe suivante montre comment procéder :
#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
Notez que nous ne recevons aucune ValueError et que nous parvenons à fusionner avec succès les deux DataFrames en un seul.
Ressources additionnelles
Les didacticiels suivants expliquent comment corriger d’autres erreurs courantes en Python :
Comment réparer : les colonnes se chevauchent mais aucun suffixe n’est spécifié
Comment réparer : l’objet ‘numpy.ndarray’ n’a pas d’attribut ‘append’
Comment réparer : si vous utilisez toutes les valeurs scalaires, vous devez transmettre un index