【发布时间】:2020-08-13 19:11:22
【问题描述】:
我对 Pandas 和 Python Record Linkage Toolkit 有点陌生,所以如果答案很明显,请原谅我。我正在尝试将一个大型数据集“CSV_1”与另一个“CSV_2”交叉引用,以便创建第三个 CSV,该 CSV 仅包含连接来自 CSV_1 和 CSV_2 的所有列的匹配项,无论是否重叠,以保留原始记录,例如
CSV_1 CSV_2
Name City Date Name_of_thing City_of_Origin Time
Examp. Bton 7/11 THE EXAMPLE, LLC Bton, USA 7/11/2020 00:00
Nomatch Cton 10/10 huh, inc. Lton, AMERICA 9/8/2020 00:00
会输出
CSV_3
Name City Date Name_of_thing City_of_Origin Time
Examp. Bton 7/11 THE EXAMPLE, LLC Bton, USA 7/11/2020 00:00
数据的结构不是很好,CSV_2 的列比 CSV_1 多很多,这就是为什么我一直试图根据 name 列以 city 列作为索引块来查找模糊匹配。无法让匹配阶段甚至执行,更不用说高效,甚至还没有解决连接步骤。有关如何解决此问题的任何帮助?
编辑:每个文件都非常大(大约 1M 行,8-20 列,80-200mb),即使用 pandas 加载单列也很麻烦。就上下文而言,这是一个工作申请的数据项目,表明偏好“熟悉 Python 或 R”。在正常情况下,这个标题不需要任何编码知识,这就是为什么我觉得很奇怪公司决定分配这个复杂的数据问题。参数是:在较低内存(想想 2013 Dell Inspiron)环境中本地运行的单个 Python 文件,无需修改(即不增加页面文件大小)。
【问题讨论】:
-
你看过 Practical Business Python 中的this 吗?为了匹配,您只需要完整加载目标 CSV_2 数据集;第一个可以分块处理,将生成的数据帧写入文件。
-
这是一个很好的来源,我用作模板,我只是不知道如何交叉引用块,以便检查 CSV_1 中的所有条目与 CSV_2 中的所有条目,以及 CSV_2匹配项连接在最终结果的右侧 CSV_1 行。
-
刚刚看到您的编辑,我会试一试,谢谢!
标签: python pandas record-linkage