Skip to content

Pandas API change leads to error in stare_dissolve() #177

@mbauer288

Description

@mbauer288

In STAREPandas/starepandas/staredataframe.py

Changes to the Pandas API result in an STAREDataFrame unexpectedly being converted to a Pandas DataFrame which leads to failure when that DataFrame is treated as if it were a STAREDataFrame.

Suggest that we overload the Pandas set_index() function with a STAREDataFrame class set_index() function so we don't run into this issue when STAREDataFrames indexing is altered.

def stare_dissolve(self, by=None, num_workers=1, geom=False, aggfunc="first", **kwargs):
    ...
    sdf = STAREDataFrame(dissolved, columns=[by, self._sid_column_name])
    # sdf is a STAREDataFrame

    # Changes to the Pandas API result in sdf being changed to a Pandas DataFrame
    sdf.set_index(by, inplace=True)

    # This fails because sdf isn't a STAREDataFrame 
    sdf.set_sids(self._sid_column_name, inplace=True)

FIX

def stare_dissolve(self, by=None, num_workers=1, geom=False, aggfunc="first", **kwargs):
    ...
    sdf = STAREDataFrame(dissolved, columns=[by, self._sid_column_name])

    # Return sdf to a STAREDataFrame, required new_sdf being created and then recast.
    new_sdf = sdf.set_index(by, inplace=False)
    sdf = new_sdf
    sdf.__class__ = STAREDataFrame

    sdf.set_sids(self._sid_column_name, inplace=True)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions