我有5組(最大)的值:
我有5組(最大)的值:
ID1 ID2 ID3 ID4 ID5
1 2 3 5 7
1 2
1 8
3 9
4 11 15
4 17
11 15
17 4 18
如果ID在同一行,那么他們就屬于一個共同的組:
因此,我想生成組:在這個例子中,我想生成一個組。
在這個例子中,我將有兩個組:
我將有兩個組。
1, 2, 3,5,7,8,9.
和
4,11,15,17,18.
我可以用
對每一列進行操作v1 = df['ID1'].tolist()
v1= "','".join(map(str,V1)
但是我不能分離組,也不能對行進行分離。有什么線索嗎?
uj5u.com熱心網友回復:
使用DataFrame.stack為DataFrame提供level_0表單索引和val列先:
df = df.rename(index=str).stack().astype(int).reset_index(name='val')
print (df)
level_0 level_1 val
0 0 ID11
1 0 ID2 2
2 0 ID33
3 0 ID4 5
4 0 ID57
5 1 ID11
6 1 ID2 2
7 2 ID11
8 2 ID2 8
9 3 ID13
10 3 ID2 9
11 4 ID14
12 4 ID2 11
13 4 ID3 15
14 5 ID14
15 5 ID2 17
16 6 ID111
17 6 ID2 15
18 7 ID117
19 7 ID2 4
20 7 ID318
然后創建connected_components與過濾掉的組,這里有字串值:
import networkx as nx
# Create the graph from the dataframe'level_0','val']].itertuples(index=False)
new = [[y for y in x if isinstance(y, int)] for x in nx.connected_components(g)]
print (new)
[[ 2, 3, 1, 5, 7, 8, 9], [4, 11, 15, 17, 18] ]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/323848.html
標籤:
