我正尝试使用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)'
当然,有)
使其无法转换为浮点数。我想知道是否可以自动解决这种问题。
答案 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)