如何解决熊猫匹配URL列表以检查依赖关系
从URL列表中,我想检查complete_path中的每个值是否是另一行的子文件夹。
子文件夹的标准是:
- 子文件夹以父行URL的URL开头并完整包含
- 子文件夹的反斜杠\数量大于父文件夹。
这是我的熊猫数据框示例。
ID complete_path
1 Ajax
2 Ajax\991\1
3 Ajax\991
4 BVB
5 BVB\Christy
6 BVB_Christy
这是我的输出样本
ID complete_path dependency
1 Ajax None
2 Ajax\991\1 1,3
3 Ajax\991 1
4 BVB None
5 BVB\Christy 4
6 BVB_Christy None
解决方法
这听起来像是网络问题。 networkx
很有帮助。
import networkx as nx
new_df = (df.assign(path=df.complete_path.str.split('\\'))
.explode('path')
)
base = new_df.duplicated('ID',keep='last')
new_df['path_id'] = new_df['path'].map(new_df.loc[~base].set_index('path')['ID'])
# create the graph
G = nx.from_pandas_edgelist(new_df,source='path_id',target='ID',create_using=nx.DiGraph)
df['dependency'] = [nx.ancestors(G,i) or None for i in df['ID']]
输出:
ID complete_path dependency
0 1 Ajax None
1 2 Ajax\991\1 {1,3}
2 3 Ajax\991 {1}
3 4 BVB None
4 5 BVB\Christy {4}
5 6 BVB_Christy None
,
请尝试:
master
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。