我已经在Pandas中读取了一个SQL查询,这些值以dtype'object'的形式出现,尽管它们是字符串、日期和整数。我可以将日期“object”转换为Pandas datetime数据类型,但在尝试转换字符串和整数时出错。
下面是一个例子:
>>> 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
遵循以下步骤:
1.清理文件->;以
csv
格式打开数据文件,查看是否存在“?”替换空位置并删除所有空位置。2.删除包含缺少值的行 e、 g.:
3.立即使用astype进行转换
注意:如果仍然在程序中发现错误,则再次检查
csv
文件,在excel中打开它以查找是否存在“?”在“必需”列中,删除它并保存文件,然后返回并运行程序。评论成功!如果成功的话。:)
根据@piRSquared的评论记录我的答案。
我需要先转换成字符串,然后是整数。
很简单
示例:
相关问题 更多 >
编程相关推荐