如何解决如何在df中找到组合之间的相似性?
我遇到以下问题:我想显示每个实体共享的组合中相似字符串的数量。我的数据比实体和字符串的数量大得多,但这是一个简化的情况:
Entity,String
X,A
X,B
Z,C
Z,A
Y,C
结果类似于:
X: 3 (it has 3 distinct strings A/B/C)
Y: 1 (string A)
Z: 2 (strings A/C)
XY: 1 (X & Y only share string A)
XZ: 2 (X & Z share strings A & C)
YZ: 1 (X & Z only share string A)
XYZ: 1 (X,Y,Z only share string A)
通常,如果我只有两个要比较的实体,我将进行合并并计算两个实体的数量。但是现在,除了这种简化的情况之外,我还有更多的实体,而且组合众多。
如何最简单地编写脚本来对实体组合之间的共享字符串进行这种类型的计数?
解决方法
In [273]: df
Out[273]:
entity string
0 X A
1 X B
2 Z C
3 Z A
4 Y A
5 X C
In [274]: for c in range(1,len(df.entity.unique()) +1):
...: for combo in itertools.combinations(df.entity.unique(),c):
...: dfs = (df[df.entity == e] for e in combo)
...: a = set.intersection(*(set(f.string.unique()) for f in dfs))
...: print(''.join(combo),len(a))
...:
X 3
Z 2
Y 1
XZ 2
XY 1
ZY 1
XZY 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。