Problemlösung: sie versuchen, objekt- und int64-spalten zusammenzuführen


Ein Fehler, der bei der Verwendung von Pandas auftreten kann, ist:

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

Dieser Fehler tritt auf, wenn Sie versuchen, zwei Pandas-DataFrames zusammenzuführen, die Spalte, die Sie zusammenführen, jedoch ein Objekt in einem DataFrame und eine Ganzzahl im anderen DataFrame ist.

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Nehmen wir an, wir erstellen die folgenden zwei Panda-DataFrames:

 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

Nehmen wir nun an, wir versuchen, die beiden DataFrames zusammenzuführen:

 #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

Wir erhalten einen ValueError , weil die Jahresvariable im ersten DataFrame eine Ganzzahl ist, die Jahresvariable im zweiten DataFrame jedoch ein Objekt ist.

So beheben Sie den Fehler

Der einfachste Weg, diesen Fehler zu beheben, besteht darin, einfach die Jahresvariable des zweiten DataFrame in eine Ganzzahl zu konvertieren und dann die Zusammenführung durchzuführen.

Die folgende Syntax zeigt, wie das geht:

 #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

Beachten Sie, dass wir keinen ValueError erhalten und es uns gelingt, die beiden DataFrames erfolgreich zu einem zusammenzuführen.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:

Lösung: Spalten überschneiden sich, es ist jedoch kein Suffix angegeben
Problembehebung: Das Objekt „numpy.ndarray“ verfügt nicht über das Attribut „append“.
Lösung: Wenn Sie alle Skalarwerte verwenden, müssen Sie einen Index übergeben

Einen Kommentar hinzufügen

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