我已经在Pandas中读取了一个SQL查询,并且这些值以dtype’object’形式出现,尽管它们是字符串,日期和整数.我能够将日期’对象’转换为Pandas datetime dtype,但是在尝试转换字符串和整数时遇到错误.

这是一个例子:

>>> 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

将df [‘date’]转换为datetime有效:

>>> 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]

但是在尝试将df [‘purchase’]转换为整数时出错:

>>> 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'

注意:当我尝试.astype(‘float’)时出现类似的错误

当试图转换为字符串时,似乎没有任何事情发生.

>>> df['id'].apply(str)

1 abc1

2 abc2

3 abc3

4 abc4

Name: id, dtype: object

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐