我有一个pandas数据帧我想将对角线设为0
import numpy
import pandas
df = pandas.DataFrame(numpy.random.rand(5,5))
df
Out[6]:
0 1 2 3 4
0 0.536596 0.674319 0.032815 0.908086 0.215334
1 0.735022 0.954506 0.889162 0.711610 0.415118
2 0.119985 0.979056 0.901891 0.687829 0.947549
3 0.186921 0.899178 0.296294 0.521104 0.638924
4 0.354053 0.060022 0.275224 0.635054 0.075738
5 rows × 5 columns
Run Code Online (Sandbox Code Playgroud)
现在我想将对角线设置为0:
for i in range(len(df.index)):
for j in range(len(df.columns)):
if i==j:
df.loc[i,j] = 0
df
Out[9]:
0 1 2 3 4
0 0.000000 0.674319 0.032815 0.908086 0.215334
1 0.735022 0.000000 …Run Code Online (Sandbox Code Playgroud) 我有一个pandas数据帧(想想是否作为网络中节点的加权邻接矩阵)的形式,df,
A B C D
A 0 0.5 0.5 0
B 1 0 0 0
C 0.8 0 0 0.2
D 0 0 1 0
Run Code Online (Sandbox Code Playgroud)
我想获得一个代表边缘列表的数据帧.对于上面的例子,我需要一些形式,edge_list_df,
Source Target Weight
0 A B 0.5
1 A C 0.5
2 A D 0
3 B A 1
4 B C 0
5 B D 0
6 C A 0.8
7 C B 0
8 C D 0.2
9 D A 0
10 D B 0
11 D C …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的数据帧:
ID | Node 1 | Node 2 | Node 3
a | 1 | 0 | 1
b | 0 | 1 | 1
c | 1 | 0 | 0
d | 1 | 1 | 1
e | 0 | 1 | 1
Run Code Online (Sandbox Code Playgroud)
我想更改它,以便我可以将其转换为网络图表,其中节点之间的连接是指示两者的ID的次数:
Node A | Node B | Weight |
Node 1 | Node 2 | 1 |
Node 1 | Node 3 | 2 |
Node 2 | Node 3 | 3 |
Run Code Online (Sandbox Code Playgroud)