Seite 1 von 1

Pandas merge: Error

Verfasst: Montag 5. Oktober 2020, 12:16
von naheliegend
Hi,

bekomme bei

Code: Alles auswählen

data5 = pd.merge(data0, data1, how='left', left_on=['Code'], right_on=['Code'])
folgenden Fehler:

Code: Alles auswählen

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

Code: Alles auswählen

data1['Code'].astype(int)
eingeben, dann kommt folgender Fehler:

Code: Alles auswählen

 File "pandas/_libs/lib.pyx", line 614, in pandas._libs.lib.astype_intsafe
ValueError: invalid literal for int() with base 10: '11.06.2020'
Was kann ich tun?

Re: Pandas merge: Error

Verfasst: Montag 5. Oktober 2020, 13:11
von sparrow
Spalten von gleichen Typ mergen.
Und wieso glaubst du, man kann ein Datums-String in eine Ganzzahl casten?

Re: Pandas merge: Error

Verfasst: Montag 5. Oktober 2020, 13:20
von Sirius3
Und was wundert Dich jetzt daran? Ein Datum kann nicht in eine Zahl verwandelt werden.

Re: Pandas merge: Error

Verfasst: Montag 5. Oktober 2020, 14:01
von naheliegend
Ja, aber wieso kann ich den Typ nicht ändern?

Also das sind halt in beiden df 5stellige Zahlenkombinationen. Nur ist das eine halt ein anderer Datentyp, der sich nicht ändern lässt.

Re: Pandas merge: Error

Verfasst: Montag 5. Oktober 2020, 14:18
von Sirius3
Ein Datum ist keine 5stellige Zahlenkombination sondern ein Datum.

Re: Pandas merge: Error

Verfasst: Montag 5. Oktober 2020, 14:55
von snafu
Ein Datum ist vom Typ date bzw datetime. Wenn man unbedingt eine Ganzzahl haben will, dann müsste man das Datum in einen Zeitstempel umwandeln. Bei fehlender Zeitangabe müsste man dann wohl von 0 Uhr ausgehen. Aber sinnvoll ist das in dem Zusammenhang nicht wirklich. Warum muss es denn unbedingt eine Zahl sein? Anscheinend willst du hier Dinge zusammenführen, die einfach nicht zusammenpassen. Was steht denn in der Spalte mit den Integern? Sind das auch Datumsangaben?

Re: Pandas merge: Error

Verfasst: Montag 5. Oktober 2020, 15:59
von naheliegend
Ich raff das nicht. Das ist aber kein Datum :-D

Sind beides csv-dateien die ich mit pd.read_csv(..) einlese.

Code: Alles auswählen

print(data1['Code'])

Code: Alles auswählen

0      14882
1      75014
2      37836
3      34794
4      44038
       ...  
962    57645
963    63910
964    82762
965    66175
966    18768
Name: Code, Length: 967, dtype: object


und für das andere:

Code: Alles auswählen

print(data0['Code'])

Code: Alles auswählen

0       44038
1       32504
2       93256
3       69533
4       80666
        ...  
1004    58712
1005    17905
1006    42759
1007    98340
1008    31400
Name: Code, Length: 1009, dtype: int64

Re: Pandas merge: Error

Verfasst: Montag 5. Oktober 2020, 17:42
von Sirius3
Bei `data1['Code']` steht doch eindeutig der Typ `object` und irgendwo zwischen Zeile 5 und 961 ist halt keine Zahl, sondern ein Datum.

Re: Pandas merge: Error

Verfasst: Mittwoch 7. Oktober 2020, 13:15
von naheliegend
Du hast Recht. Wow. Ich hatte ein Brett vor dem Kopf. Danke