У меня есть кадр данных, представляющий взвешенную двудольную сеть, например:
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.