微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决对于具有“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 举报,一经查实,本站将立刻删除。