熊猫DF dtype ValueError

时间:2018-07-30 08:20:03

标签: python python-3.x pandas

我正在尝试将读取csv的数据帧的所有列转换为float。当我执行以下代码时:

data = pd.read_csv('statistic.csv', 
parse_dates=True, index_col=['DATE'], dtype={'QUANTITY' : 'float', 
low_memory=False)

这是没有dtype参数的data.head()的样子:

                        ACCEPTOR    QUANTITY      ARTICLENO
DATE                                                                           
2014-07-07 00:00:00.0           1      348  434070668          
2014-08-11 00:00:00.0           1      281  434070668
2014-08-18 00:00:00.0           1      835  434070668
2014-08-25 00:00:00.0           1      147  434070668
2014-09-08 00:00:00.0           1      569  434070668

使用dtype选项,出现以下错误:

ValueError: could not convert string to float: 'QUANTITY'

背景:我需要将其手动转换为浮点数,因为熊猫无法自动识别那些大文件的数据类型(csv大约有10亿行/ 400 MB)(自动识别约50万行)。 稍后可能会发生,同一日期的同一商品编号有多个数量条目,因此我需要一个数字类型来防止字符串连接,因为我执行以下代码来为一些机器学习准备数据框:

data_extracted = data.groupby(['DATE','ARTICLENO']) 
['QUANTITY'].sum().unstack()

我知道QUANTITY不是有效的浮点数,但是如何告诉熊猫不要转换列标题?

编辑:这是csv的复制粘贴:

ACCEPTOR    QUANTITY    ARTICLENO   DATE
1            348    434070668       2014-07-07 00:00:00.0
1            281    434070668       2014-08-11 00:00:00.0
1            835    434070668       2014-08-18 00:00:00.0
1            147    434070668       2014-08-25 00:00:00.0
1            569    434070668       2014-09-08 00:00:00.0
1            890    434070668       2014-09-22 00:00:00.0
1            358    434070668       2014-09-29 00:00:00.0
1            359    434070668       2014-10-06 00:00:00.0
1            166    434070668       2014-10-27 00:00:00.0
1            235    434070668       2014-11-24 00:00:00.0
1            378    434070668       2014-12-15 00:00:00.0

1 个答案:

答案 0 :(得分:1)

尝试一下

选项1

data = pd.read_csv('statistic.csv', 
parse_dates=True, index_col=['DATE'], dtype={'QUANTITY' : 'float', 
low_memory=False, dtype={'QUANTITY': np.float64})

选项2

data[['QUANTITY']] = data[['QUANTITY']].apply(pd.to_numeric, errors='coerce')