gpt4 book ai didi

python - 如何根据 pd 数据框中的共享项对对进行分组?

转载 作者:行者123 更新时间:2023-12-03 23:40:55 24 4
gpt4 key购买 nike

我在下面有一张表,A、B、C、D、E 项实际上是相同的类型,但在“Old_Group”列中,它被分组为 M1、M2 和 M3。
有没有办法可以根据他们的共享项目检测他们的组?在这种情况下,M1 和 M3 都有共享项“A”,因此即使它们有其他不同的项,也可以将它们视为同一类型的项,因此应该将它们分组在一起,并且由于项 G 和 H 不'不会出现在任何其他组中,它们将被分配到另一个组中。我希望结果类似于“New_Group”列。
在真实的表中,有更多的项目,所以我想知道是否有更快的方法来正确分组它,“New_Group”的组号可以分配一个随机但不重复的数字。
非常感谢您提前。


元素
Old_Group
新建_组


一种
M1
N1


M1
N1

C
M1
N1

一种
M2
N1


M2
N1

一种
M3
N1

D
M3
N1


M3
N1

G
M4
氮气

H
M4
氮气

最佳答案

这更像是网络问题,试试 networkx

import networkx as nx
G=nx.from_pandas_edgelist(df, 'item', 'Old_Group')
l=pd.Series(list(nx.connected_components(G))).map(list).explode()
df['New'] = df.Old_Group.map(dict(zip(l,l.index)))
df
Out[75]:
item Old_Group New_Group New
0 A M1 N1 0
1 B M1 N1 0
2 C M1 N1 0
3 A M2 N1 0
4 B M2 N1 0
5 A M3 N1 0
6 D M3 N1 0
7 E M3 N1 0
8 G M4 N2 1
9 H M4 N2 1

关于python - 如何根据 pd 数据框中的共享项对对进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65930248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com