首页 > 解决方案 > 导入数据python时无法将字符串转换为浮点数

问题描述

我正在尝试使用 pandas read_csv 导入一个大型数据集,但是有一个带有一个字符的值,因此它不能转换为浮点数。

df_chunk = pd.read_csv(filename, sep='\t', dtype={'a': np.float32, 'b': np.float32}, chunksize=1000000, usecols=['a', 'b'])

chunk_list = []
for chunk in df_chunk:
    chunk_list.append(chunk)

df = pd.concat(chunk_list)

我收到错误消息

ValueError: could not convert string to float: '10.24498)'

当然,有)阻止它被转换为浮点数。我想知道是否有任何方法可以自动处理此类问题。

标签: python-3.xpandas

解决方案


一种方法是使用converters

前任:

import re
df_chunk = pd.read_csv(filename, sep='\t', converters={"a": lambda x: np.float32(re.sub(r"[^\d.]", "", x)), "b": lambda x: np.float32(re.sub(r"[^\d.]", "", x))},  chunksize=1000000, usecols=['a', 'b'])

chunk_list = []
for chunk in df_chunk:
    chunk_list.append(chunk)

df = pd.concat(chunk_list)
print(df)

推荐阅读