Извлечение неориентированного графа из кадров данных панд - PullRequest
1 голос
/ 12 апреля 2019

У меня есть ориентированный граф, сохраненный в кадре данных, каждая строка является ребром от узлов в столбцах A> B и B

Пример

A  B  Quantity Attr1 Attr2 ..
1  2  10       5     4
1  3  8        9     6
2  1  5        4     2
...

Я хотел бы вычислить чистое значение величин, как если бы график был ненаправленным.

Как пример: из двух ребер 1> 2 и 2> 1 я быхотел бы вычислить ненаправленное ребро, где количество является функцией атрибутов - пример:

A   B Quantity  Attr1  Attr2 ... 
1   2 (10 - 5)  (5-4)  (4-2)

Я думал, что мог бы подойти к этой проблеме, перебирая строки в кадре данных с двумя циклами for:

// pseudo-code
for i, nodeA in enumerate(df['A']):
    for j, nodeB in enumerate(df['B']):
        if nodeA == nodeB:
           quantity = df['A'][i]['Quantity'] - df['B'][i]['Quantity']
           // write new row on a new dataframe, representing the undirected graph

Есть ли другой способ, которым я мог бы воспользоваться в пандах, чтобы сделать это на месте?Пример:

// pseudocode

df.apply( lamdba x : computeNetValues(x) if x.A == x.B ) 

Например, эти ответы предполагают NetworkX - мне интересно, смогу ли я сделать это в пандах, прежде чем работать с графиками

Матрица смежности из кадра данных списка краев Pandas для неориентированных графов

Построить график NetworkX из Pandas DataFrame

...