Python 同时按2列分组,同时向groupby添加一些条件

Python 同时按2列分组,同时向groupby添加一些条件,python,pandas,Python,Pandas,我想按集合和部分列对数据进行分组。如果它们有相同的部分,则将它们全部分组。请参阅输出列。我想编写一个python脚本来生成输出列所显示的内容 如你们所见,集合6有部分y,集合7也有部分y,所以在本例中,我希望输出为y,u,因为它们共享部分y 我希望这是有意义的 这更像是一个网络问题 import networkx as nx G=nx.from_pandas_edgelist(df, 'Set', 'Parts') l=list(nx.connected_components(G)) c1=[[

我想按集合和部分列对数据进行分组。如果它们有相同的部分,则将它们全部分组。请参阅输出列。我想编写一个python脚本来生成输出列所显示的内容

如你们所见,集合6有部分y,集合7也有部分y,所以在本例中,我希望输出为y,u,因为它们共享部分y


我希望这是有意义的

这更像是一个网络问题

import networkx as nx
G=nx.from_pandas_edgelist(df, 'Set', 'Parts')
l=list(nx.connected_components(G))
c1=[[y  for y in x if y in df['Set'].tolist()  ]for x in l]
c2=[','.join(set([y  for y in x if y in df['Parts'].tolist()]))for x in l]
from collections import ChainMap

df.Set.map(dict(ChainMap(*map(dict.fromkeys, c1, c2))))
Out[167]: 
0     f,a,b,c,d,g,e
1     f,a,b,c,d,g,e
2     f,a,b,c,d,g,e
3     f,a,b,c,d,g,e
4     f,a,b,c,d,g,e
5     f,a,b,c,d,g,e
6     f,a,b,c,d,g,e
7     f,a,b,c,d,g,e
8     f,a,b,c,d,g,e
9     f,a,b,c,d,g,e
10                z
11              u,y
12              u,y
13              u,y
Name: Set, dtype: object

这更像是一个网络问题

import networkx as nx
G=nx.from_pandas_edgelist(df, 'Set', 'Parts')
l=list(nx.connected_components(G))
c1=[[y  for y in x if y in df['Set'].tolist()  ]for x in l]
c2=[','.join(set([y  for y in x if y in df['Parts'].tolist()]))for x in l]
from collections import ChainMap

df.Set.map(dict(ChainMap(*map(dict.fromkeys, c1, c2))))
Out[167]: 
0     f,a,b,c,d,g,e
1     f,a,b,c,d,g,e
2     f,a,b,c,d,g,e
3     f,a,b,c,d,g,e
4     f,a,b,c,d,g,e
5     f,a,b,c,d,g,e
6     f,a,b,c,d,g,e
7     f,a,b,c,d,g,e
8     f,a,b,c,d,g,e
9     f,a,b,c,d,g,e
10                z
11              u,y
12              u,y
13              u,y
Name: Set, dtype: object
使用networkx最小生成树和BFS的又一个解决方案

输出

0     a,b,c,d,e,f,g
1     a,b,c,d,e,f,g
2     a,b,c,d,e,f,g
3     a,b,c,d,e,f,g
4     a,b,c,d,e,f,g
5     a,b,c,d,e,f,g
6     a,b,c,d,e,f,g
7     a,b,c,d,e,f,g
8     a,b,c,d,e,f,g
9     a,b,c,d,e,f,g
10                z
11              u,y
12              u,y
13              u,y
Name: set, dtype: object
使用networkx最小生成树和BFS的又一个解决方案

输出

0     a,b,c,d,e,f,g
1     a,b,c,d,e,f,g
2     a,b,c,d,e,f,g
3     a,b,c,d,e,f,g
4     a,b,c,d,e,f,g
5     a,b,c,d,e,f,g
6     a,b,c,d,e,f,g
7     a,b,c,d,e,f,g
8     a,b,c,d,e,f,g
9     a,b,c,d,e,f,g
10                z
11              u,y
12              u,y
13              u,y
Name: set, dtype: object

不幸的是,这个分组对我来说没有意义:也许你可以再解释一点….?例如,为什么第一行1,a有这个输出a,b,c,d,e,f,g?我不清楚,不幸的是,这个分组对我来说没有意义:也许你可以再解释一点….?例如,为什么第一行1,a有这个输出a,b,c,d,e,f,g?现在还不清楚梅是否也沿着这条路线走。但是,我需要复习一下我的“ChainMap”收集方法:谢谢这就是为什么我喜欢Python社区!你们真是帮了大忙。我已经被这个问题困扰了好几天@Sotra yw:-快乐编码:-我也在走这条路线。但是,我需要复习一下我的“ChainMap”收集方法:谢谢这就是为什么我喜欢Python社区!你们真是帮了大忙。我已经被这个问题困扰了好几天@Sotra yw:-快乐编码:-