对于具有“set[int]”值的数据,基于至少一个公共成员进行分组的快速方法是什么?

问题描述

目前,我正在通过解析每个集合、选择每个成员、将所述成员添加或跳过到某个 memory: set 变量来解决这样的问题(以查看该数字是否已经被解析作为查看的结果)其他一些集合),然后将包含所述成员的所有集合“重新索引”为所有所述集合的并集。

代码中:

from typing import Set

from pandas import DataFrame

df = DataFrame({"set": [frozenset([1,3]),frozenset([2,frozenset([5,4])],'data': [1,2,3]})
memory: Set[int] = set()
membership: frozenset
for membership in df["set"]:  # "for each set"
    localMembers = membership
    for i in membership:  # "for each element if not in memory"
        if i not in memory:
            memory.add(i)
            others: frozenset
            for others in [m for m in df["set"] if i in m]:
                superset = localMembers.union(others)
                for tochange in df.index[df["set"] == localMembers].tolist():
                    df.at[tochange,"set"] = superset
                for tochange in df.index[df["set"] == others].tolist():
                    df.at[tochange,"set"] = superset
                localMembers = superset

给予:

>> df
         set  data
0  (1,3)     1
1  (1,3)     2
2     (4,5)     3

当然,这非常慢,因此想知道我可以采用什么其他方法来加快这样的过程。我想一种方法可能是获取类别,然后在最后进行所有设置。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)