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