In [1]:
from harness import Harness
import pandas
from harness.python.ext import HarnessExtension
In [2]:
class NetworkXMixin:
graph = None
class NetworkXExtension(HarnessExtension):
imports = 'networkx'
mixin = NetworkXMixin
def keywords(self, dataframe):
return {
'G': lambda: dataframe.graph,
'df': lambda: dataframe,
}
def to_graph(self, source, target, edge_attr=True, df=None):
df.graph = self.module_.from_pandas_dataframe(
df, source, target, edge_attr
)
return df.graph
def callback(self, dataframe, value):
if isinstance(value, self.module_.Graph):
return dataframe
return value
def edges(self, df):
return df.graph.edges()
def nodes(self, df):
return df.graph.nodes()