如何将一个以PandasDataFrame
表示的邻接矩阵转换为一个边列表?例如:
0 1 2 3 4
0 0 0 0 1 1
1 1 0 1 1 0
2 1 1 0 0 0
3 0 0 0 0 0
4 1 0 0 1 0
预期结果:
[(0, 3), (0, 4), (1, 0), (1, 2), (1, 3), (2, 0), (2, 1), (4, 0), (4, 3)]
我的尝试:
import pandas as pd
import random
x = 5
table = []
row = []
for i in range(x):
for j in range(x):
if i == j :
row.append(0)
else :
row.append(random.randint(0,1))
table.append(row)
row = []
df = pd.DataFrame(table)
df
3条答案
按热度按时间ltqd579y1#
IIUC,将
0
替换为NA
,stack
(默认去掉NA),并将索引转换为列表:输出:
匹配输入:
0sgqnhkj2#
eanckbw93#
您可以使用
numpy
函数argwhere
:输出: