python - 逐行附加 2 个 csv 文件时的内存问题
问题描述
我有一个较大的 csv 文件(约 550 mb)和一个较小的 csv 文件(约 5mb),我想将所有行合并到一个 csv 文件中。它们都具有相同的标题(相同的顺序、值、列数),并且显然较大的文件有更多的行。我正在使用 32 位 Python(无法更改)并且在附加 csv 时遇到问题。似乎最佳答案和最佳答案之后的下一个答案在这里有效:如何在 python 中合并大型 csv 文件?. 然而,这需要大量的时间,我正在寻找加快这个过程的方法。此外,当我停止运行链接问题的第二个答案中的代码时(因为运行需要很长时间),生成的 csv 中的第一行始终为空。我猜当您调用 pd.to_csv(..., mode='a', ...) 时,它会附加在 csv 的第一行下方。你如何确保第一行被填充?
解决方案
这在 Linux 命令行中要简单得多,并且不需要将文件加载到内存中
使用tail命令,+2是要跳过的行数。通常对我来说,由于文件的格式,我需要 +2 而不是 +1:
tail -n +2 small.csv >> giant.csv
这应该可以解决问题。
如果您需要在 python 中执行此操作,则可能会使用附加模式,但需要加载到内存中。
推荐阅读
- jakarta-ee - 我在 Tomcat7 中有 CustomSharedClassLoader 用于共享库。我们迁移到tomcat9,它不工作。如何在tomcat9中实现同样的功能
- nginx - 如何创建没有域或主机名的 GKE HTTP(S) 负载均衡器
- python - 如何在python中读取“应用程序和服务日志”下的事件日志?
- python - 在 Tensorflow-lite 中输入具有动态尺寸的图像
- html - 无法从 wordpress 模板的菜单中删除奇怪的元素
- keycloak - KeyCloak FIPS 兼容吗?
- imagemagick - 通过启动图像来反转变形
- awk - 根据文件中列中的值拆分大文件
- clojure - 使用石英岩的 cron 示例时得到“clojurewerkz.quartzite.jobs/of-type 的不正确 arity 1”?
- c - 使用 c 程序更改应用程序核心转储目录