Python 同时按2列分组,同时向groupby添加一些条件
我想按集合和部分列对数据进行分组。如果它们有相同的部分,则将它们全部分组。请参阅输出列。我想编写一个python脚本来生成输出列所显示的内容 如你们所见,集合6有部分y,集合7也有部分y,所以在本例中,我希望输出为y,u,因为它们共享部分yPython 同时按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=[[
我希望这是有意义的 这更像是一个网络问题
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:-快乐编码:-