Python 数据类型值错误
我正在尝试将csv数据帧读取的所有列转换为浮点。当我执行以下代码时:Python 数据类型值错误,python,python-3.x,pandas,Python,Python 3.x,Pandas,我正在尝试将csv数据帧读取的所有列转换为浮点。当我执行以下代码时: data = pd.read_csv('statistic.csv', parse_dates=True, index_col=['DATE'], dtype={'QUANTITY' : 'float', low_memory=False) 下面是data.head()在没有dtype参数的情况下的外观: ACCEPTOR QUANTITY ARTICLEN
data = pd.read_csv('statistic.csv',
parse_dates=True, index_col=['DATE'], dtype={'QUANTITY' : 'float',
low_memory=False)
下面是data.head()在没有dtype参数的情况下的外观:
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'
背景:我需要手动将其转换为float,因为pandas不会自动识别那些大文件的数据类型(csv大约有10亿行/400 MB)(对于大约500000行,它会自动识别)。
稍后可能会发生,在同一日期,同一商品编号有多个数量条目,因此我需要一个数字类型来防止字符串串联,因为我执行以下代码来为一些机器学习准备数据帧:
data_extracted = data.groupby(['DATE','ARTICLENO'])
['QUANTITY'].sum().unstack()
我知道QUANTITY不是有效的float,但如何告诉pandas不要转换列标题
编辑:以下是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
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')
您能否分享输入CSV文件的外观(与数据帧结果相反)?默认情况下,列应作为列而不是数据提供。编辑问题我以前尝试过选项2,产生了相同的结果。我将尝试选项1,但选项2有效,唯一的问题是:我的文章编号也被转换为float,这有点糟糕,因为我在后续步骤中将它们用作列标题。在以后的步骤中,有没有办法避免或恢复这种情况?