我正在使用 Pandas 读取一堆 CSV。将 options json 传递给 dtype 参数以告诉 pandas 将哪些列读取为字符串而不是默认值:
dtype_dic= { 'service_id':str, 'end_date':str, ... }
feedArray = pd.read_csv(feedfile , dtype = dtype_dic)
在我的场景中,除少数特定列外的 所有 列都将被读取为字符串。因此,我不想将几个列定义为 dtype_dic
中的 str,我只想将我选择的几个列设置为 int 或 float。有没有办法做到这一点?
这是一个循环遍历具有不同列的各种 CSV,因此在将整个 csv 读取为字符串( dtype=str
)之后进行直接列转换并不容易,因为我不会立即知道 csv 具有哪些列. (我宁愿花精力在 dtype json 中定义所有列!)
编辑:但是如果有一种方法可以处理要转换为数字的列名列表而不会在该 csv 中不存在该列时出错,那么是的,如果没有其他方法,那将是一个有效的解决方案这在 csv 阅读阶段本身。
注意:这听起来 像是一个以前问过的问题,但那里的答案却走上了一条非常不同的道路(与 bool 相关),这不适用于这个问题。请不要标记为重复!
原文由 Nikhil VJ 发布,翻译遵循 CC BY-SA 4.0 许可协议
编辑 - 抱歉,我误读了你的问题。更新了我的答案。
您可以将整个 csv 读取为字符串,然后将所需的列转换为其他类型,如下所示:
另一种方法,如果您真的想在读入文件时为所有列指定正确的类型并且之后不更改它们:只读入列名(无行),然后使用它们来填充哪些列应该是字符串