python-3.x - 导入数据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)'
当然,有)
阻止它被转换为浮点数。我想知道是否有任何方法可以自动处理此类问题。
解决方案
一种方法是使用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)
推荐阅读
- django - 在 Django 中从其他字段值生成随机值
- excel - 删除列中的重复项并在另一列中输入 Sum
- python - 将方程解析为 Python 中的元组列表
- range - Gnuplot:分类数据 - 将颜色与数据匹配添加范围线
- sql-server - 上次从历史表中更改列的迁移时间?
- android - 使用 onSaveInstanceState() 和 ViewModel 保存活动的状态
- docker - Kibana 未连接到 elasticsearch docker
- flutter - Flutter TextField 在第一次输入 Space 时为空
- html - 无法从网络上的另一台 PC 访问托管站点
- logstash - 如何从多个 couchdb 数据库输入