pandas - двусторонняя сеть проекта из фрейма данных

У меня есть кадр данных, представляющий взвешенную двудольную сеть, например:

L1,L2,w
1,A,0.9
2,A,0.2
3,A,0.5
1,B,0.9
2,B,0.8

где узлы в столбце L1 соединены с узлами в столбце L2 со значением веса, связанным с каждым ребром (w).

Двусторонняя сеть

Я хотел бы проецировать сеть на уровень L1. Первым шагом является соединение значений L1, если они связаны с одними и теми же значениями L2, умножение весов, например:

1,2,0.9*0.2
2,3,0.2*0.5
1,3,0.9*0.5
1,2,0.9*0.8

Второй шаг — создание нового фрейма данных (списка взвешенных ребер), суммирующего веса повторяющихся ребер:

1,2,0.9*0.2 + 0.9*0.8
2,3,0.2*0.5
1,3,0.9*0.5

Я знаю, что это немного странно; Я пробовал тот же подход, используя двудольную функцию networkx, но работать с весами внутри нее немного сложно, поэтому я бы предпочел работать с кадром данных pandas.


person Fabio Lamanna    schedule 09.07.2015    source источник