使用字典过滤数据帧(邻接矩阵)

2024-10-06 18:30:45 发布

您现在位置:Python中文网/ 问答频道 /正文

上下文:我有两个数据集:

  1. 表征加权有向网络的数据帧df_edges
   id_from: id_to:   weight:  
   id1     id2        0.5    .
   id1     id3        0.2      
   id2     id3        0.4
   id2     id4        0.5
   ...
   id3    id1         1.2

  1. 描述id之间配对的字典dict_rel,表示此边是一个特殊的/重要的对应项
dict_rel = {'id1': 'id3',
 'id2': 'id10', ...

特点:

  • 在某些情况下,字典指定为重要的边缘可能根本不会出现在边缘数据中
  • 除了一个简单的字典,在一个扩展中,我还会有一个,其中每个键的值都是一个重要对应项的列表(这让我想知道我使用字典来处理这个问题的尝试是否特别聪明)

目标我想从df_edges中为dict_rel中的每个键提取weight值,这样我就得到了一个沿着

id: important_counterpart_id:   important_counterpart_id_weight:
id1 id3                         0.2
id2 id10                        0
...

(从这里开始,计算任何节点与“重要对应物”的边权重份额应该很简单。)

尝试:将数据转换成上述形式后,我尝试:

dict_weights = {}

for key, value in dict_rel.items():
    dict_weights[key] = df_edges.loc[(df_edges['id_from']==key) & 
    (df_edges['id_to']==value)].weight

然后我可以使用它来构造所需的数据帧。但是内核在这个操作中被卡住了

任何帮助都会很棒


Tags: to数据keyfromiddf字典dict