【发布时间】:2013-01-14 21:20:19
【问题描述】:
我正在使用 Python 进行一些数据分析。我有两个表,第一个(我们称之为'A')有 1000 万行和 10 列,第二个('B')有 7300 万行和 2 列。他们有 1 列具有共同的 id,我想根据该列将两个表相交。特别是我想要表的内部连接。
我无法将表 B 作为 pandas 数据框加载到内存中,以便在 pandas 上使用正常的合并功能。我尝试通过读取块上的表 B 的文件,将每个块与 A 相交并连接这些交叉点(内部连接的输出)。这在速度上是可以的,但时不时地给我带来问题并吐出分段错误......没有那么好。此错误很难重现,但它发生在两台不同的机器上(Mac OS X v10.6 (Snow Leopard) 和 UNIX、Red Hat Linux)。
我最终尝试了 Pandas 和 PyTables 的组合,方法是将表 B 写入磁盘,然后遍历表 A 并从表 B 中选择匹配的行。最后一个选项有效,但速度很慢。默认情况下,pytables 上的表 B 已被索引。
我该如何解决这个问题?
【问题讨论】:
-
为什么不能在数据库中计算?
-
我对数据库和 SQL 不是很熟悉。与 SQLite 和其他相比,PyTables 似乎相当快。我确实认为这将是一个很好的前进方向。我将尝试使用 SQLlite,看看效果如何。
标签: python join merge pandas pytables