Source code for r2lab.mapdataframe

"""
A standard pandas ``DataFrame`` for storing results
on a node by node basis together with their
map coordinates.
"""

from pandas import DataFrame

[docs] class MapDataFrame(DataFrame): """ A ``MapDataFrame`` is a dataframe that has one line per node, together with their x and y coordinates as specified in the map object, plus additional columns as specified in the constructor. Is is indexed by node numbers. Parameters: map: a R2labMap object that primarily provides nodes coordinates columns: an dictionary - preferrably an ``OrderedDict`` if using an older Python - that specifies each column name (key) and corresponding initial value (value). """ def __init__(self, r2labmap, columns=None): # the map object essentially carries the coordinates # system that you wish to use # for weird reasons related to pandas implementation, # we can't seem to do this: # self.r2labmap = r2labmap # as it triggers infinite recursion (go figure...) # turns out we don't absolutely need this apparently, # do let's proceed this way for now if columns is None: columns = dict() # ditto # self.columns = columns all_columns = ['x', 'y'] + list(columns.keys()) DataFrame.__init__(self, index=r2labmap.indexes(), columns=all_columns) for node_id, (gridx, gridy) in r2labmap.iterate_nodes(): self.loc[node_id]['x'] = gridx self.loc[node_id]['y'] = gridy for column, value in columns.items(): self.loc[node_id][column] = value