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

Schreibe einen Kommentar