使用 Python 的模式聚类

Pattern Clustering using Python

我想识别所有模式数据都可以出现在以下数据框的“子集”列中。

DataFrame-

Name    Subset    
A-1001  0
A-1001  1
A-1001  2
B-1005  3
B-1005  4
D-1015  0
D-1015  1
D-1015  2
L-650   0 
L-650   5
L-650   6
V-895   3
V-895   4

在此数据框中,A-1001、D-1015 子集的模式匹配,而 B-1005、V-895 具有相同模式。 L-650 的图案不同。

即输出示例

Pattern#    Name
1           A-1001, D-1015
2           B-1005, V-895
3           L-650

如何使用 Python 识别这些模式?

P.S可能有很多未知的模式。

IIUC,您想执行两次 groupby,一次聚合每个名称的子集并形成“模式”,第二次聚合模式以对名称进行分组:

import numpy as np

(df.groupby('Name', as_index=False)
   ['Subset'].agg(frozenset)      # use a tuple instead of frozenset if order matters
   .groupby('Subset', as_index=False)
   .agg(list)                     # use ', '.join instead of list to have a string
   .assign(Pattern=lambda d: np.arange(len(d))+1)
)

输出:

      Subset              Name  Pattern
0  (0, 1, 2)  [A-1001, D-1015]        1
1     (3, 4)   [B-1005, V-895]        2
2  (0, 5, 6)           [L-650]        3