【发布时间】:2021-10-03 11:41:59
【问题描述】:
我有 2 个数据框:
数据框 1:
path hierarchy
0 path3 path1/path2/path3
1 path2 path1/path2
2 path6 path1/path2/path4/path5/path6
数据帧 2:
path hierarcy unique_id
0 path2 path1/<random_string>/path2 1
1 Path3 <random_string>/Path_2/path3 2
2 path2 path1/Path2 3
3 pAth6 path1/path2/path4/path6 4
4 path6 path1/path2/path4/path5/path6 5
预期输出:
path hierarchy unique_id
0 path3 path1/path2/path3 2
1 path2 path1/path2 3
2 path6 path1/path2/path4/path5/path6 5
现在,我想填写从第二个数据帧到第一个数据帧的 unique_id。但是,有一些问题-
- 我不能直接根据
path列执行merge(left)2 个数据帧,因为正确的路径也取决于hierarchy列。 - hierarchy 列中的字符串与
not完全相同。有一些区别,例如Path_2和path2。路径列也是如此。
我尝试了fuzzy 匹配,但造成问题的是hierarchy 列。我想从层次结构列的右侧开始匹配,然后向左移动,在每个级别上应用模糊匹配。
我不确定这是否是一个好方法。
基本上,要求是根据两个路径/层次结构列确定最完美的匹配。
创建数据框的字典:
df1 = pd.DataFrame({'path': {0: 'path3', 1: 'path2', 2: 'path6'},
'hierarchy': {0: 'path1/path2/path3',
1: 'path1/path2',
2: 'path1/path2/path4/path5/path6'}})
df2 = pd.DataFrame({'path': {0: 'path2', 1: 'Path3', 2: 'path2', 3: 'path6', 4: 'path6'},
'hierarcy': {0: 'path1/<random_string>/path2',
1: '<random_string>/Path_2/path3',
2: 'path1/Path2',
3: 'path1/path2/path4/path6',
4: 'path1/path2/path4/path5/path6'},
'unique_id': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}})
df3 = pd.DataFrame({'path': {0: 'path3', 1: 'path2', 2: 'path6'},
'hierarchy': {0: 'path1/path2/path3',
1: 'path1/path2',
2: 'path1/path2/path4/path5/path6'},
'unique_id': {0: 2, 1: 3, 2: 5}})
感谢任何帮助。
【问题讨论】:
-
@Alexey 这不会帮助已经尝试过,要求是在每个层次结构级别上进行模糊匹配。和路径列。
标签: python pandas string networkx fuzzywuzzy