要解决的问题如下: 我有两个数据集,我想合并成一个。数据集没有公共键列。基于第1列和第2列的独特组合以及第3列的相似性,我想排除重复项。通过相似性,我的意思是数据集A中第3列的值仅略大于/小于数据集B中的值,例如,对于值20,范围[18,22]中的值是可接受的。举例说明:
数据集A:
Col1 | Col2 | Col3 |
1 A | A | 10 |
2 B | A | 20 |
3 A | B | 10 |
4 B | B | 20 |
数据集B:
Col1 | Col2 | Col3 |
1 A | A | 10 |
2 B | A | 21 |
3 A | B | 100 |
预期产量:
Col1 | Col2 | Col3 |
1 A | A | 10 |
2 B | A | 20 |
3 A | B | 10 |
4 A | B | 100 |
5 B | B | 20 |
有没有计算复杂度低于O(n^2)[用每一行检查每一行]的方法?你知道吗
一个解决方案是创建数据集A的
(Col1, Col2) -> Col3
的映射。然后,B中的每一行可以查看映射,以查看数据集A中存在哪些Col3
值具有相同的Col1
和Col2
值。你知道吗伪代码,因为我不熟悉
pandas
库:defaultdict是必需的,因为
col1
和col2
中的行具有相同的值。这应该更快,因为创建映射是O(n)
,在B中的每个元素上循环应该只检查A中具有相同col1
和col2
值的元素。你知道吗相关问题 更多 >
编程相关推荐