【问题标题】:Fast method for matching two CSV's files on column value在列值上匹配两个 CSV 文件的快速方法
【发布时间】: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” 最终结果。

【问题讨论】:

  • 使用pandaspd.merge,如果你的电脑足够好的话,你可以使用sort,然后在bash中使用join,因为这不受你电脑内存的限制
  • 如果你正在使用 pandas,你可以关注这个帖子 - stackoverflow.com/questions/14224172/…

标签: python csv merge


【解决方案1】:

解决方案确实是 pandas 和 pd.merge。将 500k 与 900 万匹配对 pandas 来说只需几秒钟 :O 感谢 cmets

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2012-06-15
    相关资源
    最近更新 更多