gpt4 book ai didi

python - 如何使用 Python 比较 2 个非常大的矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:07 25 4
gpt4 key购买 nike

我有一个有趣的问题。

我有一个非常大(大于 300MB,文件中超过 10,000,000 行/行)的 CSV 文件,其中包含时间序列数据点。每个月我都会收到一个新的 CSV 文件,它几乎与以前的文件相同,只是添加和/或删除了一些新行,并且可能修改了几行。

我想使用 Python 来比较这 2 个文件并确定添加、删除和修改了哪些行。

问题是文件非常大,所以我需要一个能够处理大文件并在合理时间内高效执行的解决方案,越快越好。

文件及其新文件的示例:

旧文件
A,2008-01-01,23
A,2008-02-01,45
B,2008-01-01,56
B,2008-02-01,60
C,2008-01-01,3
C,2008-02-01,7
C,2008-03-01,9
等...

新文件
A,2008-01-01,23
A,2008-02-01,45
A,2008-03-01,67 (已添加)
B,2008-01-01,56
B,2008-03-01,33 (删除和添加)
C,2008-01-01,3
C,2008-02-01,7
C,2008-03-01,22 (已修改)
等...

基本上这2个文件可以看做是需要比较的矩阵,开始想着用PyTable了。将不胜感激有关如何解决此问题的任何想法。

最佳答案

像这样。

第 1 步。排序。

第二步,读取每个文件,逐行比较。将差异写入另一个文件。

你可以很容易地自己写这个。或者您可以使用 difflibhttp://docs.python.org/library/difflib.html

请注意,通用解决方案非常慢,因为它会搜索接近差异的匹配线。编写自己的解决方案可以运行得更快,因为您知道文件应该如何匹配。您可以优化“resynch-after-a-diff”算法。

10,000,000 行几乎无关紧要。它没有那么大。两个 300Mb 的文件很容易放入内存。

关于python - 如何使用 Python 比较 2 个非常大的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3760615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com