【发布时间】:2016-08-07 21:12:55
【问题描述】:
我有一个非常大的 csv,我需要读取它。为了加快速度并节省 RAM 使用量,我使用 read_csv 并将某些列的 dtype 设置为 np.uint32。问题是某些行缺少值,而 pandas 使用浮点数来表示这些值。
- 是否可以简单地跳过缺少值的行?我知道我可以在读取整个文件后执行此操作,但这意味着在此之前我无法设置 dtype,因此会使用太多 RAM。
- 是否可以将缺失值转换为我在读取数据期间选择的其他值?
【问题讨论】:
-
你会考虑预处理你的数据,例如'grep -v ,, infile.csv > goodfile.csv`吗?这样,您也许可以更快地消除“坏”行。但这取决于 all 列中的空值是无效还是仅部分无效。
-
@JohnZwinck 你能在基于 Windows 的机器上使用“grep”吗?
-
@Merlin:是的,我可以。
-
@JohnZwinck 不是你这个人,而是全球的你。 (不再是windows用户。)你认为OP可以吗?
-
@JohnZwinck 我可以进行预处理,但如果可能的话,我希望将所有处理都放在一个文件中。也许 Python 可以调用 grep 并将输出通过管道传输到 read_csv?