【发布时间】:2018-01-12 08:11:37
【问题描述】:
我有两个 csv,其中的行可以与一列中的值匹配(在对该列进行一些调整之后)。匹配后,我想从它们中获取一些值并创建一个新的组合行。
我想到了一个使用 csv.DictReader 的简单脚本,然后是双 for 循环:
for row1 in csv1:
for row2 in csv2:
if row1['someID'] == row2['someID]:
newdict = ... etc
但是,一个文件是 900 万行,另一个是 500k 行。所以我的代码需要 4.5 * 10^12 次迭代。因此我的问题是:匹配它们的快速方法是什么?
重要:
- 与它们匹配的这个“someID”在 csv 中都不是唯一的。
- 我希望每场比赛都有更多的行。因此,如果出现“someID”
两次在 csv1 和 3 次 csv2,我预计 6 行带有这个“someID” 最终结果。
【问题讨论】:
-
使用
pandas和pd.merge,如果你的电脑足够好的话,你可以使用sort,然后在bash中使用join,因为这不受你电脑内存的限制 -
如果你正在使用 pandas,你可以关注这个帖子 - stackoverflow.com/questions/14224172/…