Pandas: konvertieren dtype '- Objekt' int -
Ich gelesen habe eine SQL-Abfrage in Pandas und die Werte kommen als dtype 'Objekt', obwohl Sie von Zeichenfolgen, Datumsangaben und zahlen. Ich bin in der Lage, konvertieren Sie das Datum auf "Objekt" zu einem Pandabären-datetime-dtype, aber ich erhalte eine Fehlermeldung, wenn Sie versuchen, konvertieren Sie die string-und Integer-zahlen.
Hier ist ein Beispiel:
>>> import pandas as pd
>>> df = pd.read_sql_query('select * from my_table', conn)
>>> df
id date purchase
1 abc1 2016-05-22 1
2 abc2 2016-05-29 0
3 abc3 2016-05-22 2
4 abc4 2016-05-22 0
>>> df.dtypes
id object
date object
purchase object
dtype: object
Umwandlung der df['date']
datetime funktioniert:
>>> pd.to_datetime(df['date'])
1 2016-05-22
2 2016-05-29
3 2016-05-22
4 2016-05-22
Name: date, dtype: datetime64[ns]
Aber ich bekomme eine Fehlermeldung, wenn Sie versuchen zu konvertieren, die df['purchase']
eine Ganzzahl:
>>> df['purchase'].astype(int)
....
pandas/lib.pyx in pandas.lib.astype_intsafe (pandas/lib.c:16667)()
pandas/src/util.pxd in util.set_value_at (pandas/lib.c:67540)()
TypeError: long() argument must be a string or a number, not 'java.lang.Long'
HINWEIS: ich bekomme eine ähnliche Fehlermeldung, als ich versucht habe .astype('float')
Und wenn Sie versuchen, zu konvertieren zu einem string, scheint nichts zu passieren.
>>> df['id'].apply(str)
1 abc1
2 abc2
3 abc3
4 abc4
Name: id, dtype: object
InformationsquelleAutor der Frage cyril | 2016-08-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dokumentieren die Antwort, die für mich gearbeitet, basierend auf dem Kommentar von @piRSquared.
Ich brauchte, um zu konvertieren zu einem string den ersten, dann ein integer.
InformationsquelleAutor der Antwort cyril
Es ist einfach
Beispiel:
labels, uniques = pd.factorize(['b', 'b', 'a', 'c', 'b'])
labels
array([0, 0, 1, 2, 0])
uniques
array(['b', 'a', 'c'], dtype=object)
InformationsquelleAutor der Antwort benybrahim
Gehen Sie folgendermaßen vor:
1.reinigen Sie Ihre Datei -> öffnen Sie Ihre Datendatei in
csv
format und sehen, dass es ein "?" an Stelle von leeren Orten und löschen Sie alle von Ihnen.2.drop der Zeilen mit fehlenden Werten
z.B.:
3.verwenden astype jetzt für die Konvertierung
Hinweis: Wenn noch Suche nach Fehlern in Ihrem Programm dann wieder überprüfen Sie Ihre
csv
- Datei, öffnen Sie Sie in excel, um herauszufinden, ob gibt es ein "?" in Ihre gewünschte Spalte, dann löschen Sie es und speichern Sie die Datei und gehen Sie zurück und führen Sie das Programm.Kommentar Erfolg! wenn es funktioniert. 🙂
InformationsquelleAutor der Antwort mandeep