导入数据python时无法将字符串转换为float

时间:2019-06-28 13:52:44

标签: python-3.x pandas

我正尝试使用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)'

当然,有)使其无法转换为浮点数。我想知道是否可以自动解决这种问题。

1 个答案:

答案 0 :(得分:0)

一种方法是使用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)