Oplossing: u probeert object- en int64-kolommen samen te voegen


Een fout die u kunt tegenkomen bij het gebruik van panda’s is:

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

Deze fout treedt op wanneer u twee panda’s DataFrames probeert samen te voegen, maar de kolom waarop u samenvoegt is een object in het ene DataFrame en een geheel getal in het andere DataFrame.

Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.

Hoe de fout te reproduceren

Laten we zeggen dat we de volgende twee panda DataFrames maken:

 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

Stel nu dat we proberen de twee DataFrames samen te voegen:

 #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

We ontvangen een ValueError omdat de variabele year in het eerste DataFrame een geheel getal is, maar de variabele year in het tweede DataFrame een object is.

Hoe u de fout kunt oplossen

De eenvoudigste manier om deze fout op te lossen is door eenvoudigweg de jaarvariabele van het tweede DataFrame naar een geheel getal te converteren en vervolgens de samenvoeging uit te voeren.

De volgende syntaxis laat zien hoe u dit doet:

 #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

Houd er rekening mee dat we geen ValueError ontvangen en dat we erin slagen de twee DataFrames met succes samen te voegen tot één.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:

Oplossing: Kolommen overlappen elkaar, maar er is geen achtervoegsel opgegeven
Oplossing: Object ’numpy.ndarray‘ heeft geen ‚append‘-attribuut
Oplossing: als u alle scalaire waarden gebruikt, moet u een index doorgeven

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert