Python:来自数据帧的网络
我有一个数据帧Python:来自数据帧的网络,python,Python,我有一个数据帧df,它包含由节点I和节点j组成的定向网络的边缘列表信息。每个节点都有自己的值 df node_i node_j value_i value_j 0 3 4 89 33 1 3 2 89 NaN 2 3 5 89 69 3 0 2 45
df
,它包含由节点I
和节点j
组成的定向网络的边缘列表信息。每个节点都有自己的值
df
node_i node_j value_i value_j
0 3 4 89 33
1 3 2 89 NaN
2 3 5 89 69
3 0 2 45 NaN
4 0 3 45 89
5 1 2 109 NaN
我想创建一个权重,它是node_I
和'node_j'之间的分数,而NaN
应该被相邻节点的平均值替换
我想要一个如下所示的数据帧:
df
node_i node_j value_i value_j w
0 3 4 89 33 89/33 ## fraction
1 3 2 89 NaN 89/((69+33)/2) ## fraction with average
2 3 5 89 69 89/69 ## fraction
3 0 2 45 NaN 45/89
4 0 3 45 89 45/89
5 1 2 109 NaN 109
我会做一个循环,但对于大型网络来说,这是无效的
nodes = pd.unique(df['Node_i'])
df['w'] = 0
for i in nodes:
tmp = df[df['Node_i'] == i]
w_j = np.mean(tmp['Node_j']) ## Compute average
tmp.ix[tmp.value_j.isnull(), 'value_j'] = w_j ## replace NaN with mean
idx = tmp.index()
tmp['w'][idx] = tmp['value_i'][idx] / tmp['value_j'][idx] )
我不能用你天真的方法。你能发布想要的输出吗?@user3483203我发布了