diff --git a/geopandas/geodataframe.py b/geopandas/geodataframe.py index 08c8a3d..49e7691 100644 --- a/geopandas/geodataframe.py +++ b/geopandas/geodataframe.py @@ -461,10 +461,9 @@ class GeoDataFrame(GeoPandasBase, DataFrame): # Separate data and geometry data = self.drop(labels=self.geometry.name, axis=1).copy() - - groupby_plus_geometry = [self.geometry.name] - groupby_plus_geometry.append(by) - geometry = self[groupby_plus_geometry].copy() + groupby_plus_geometry_cols = [self.geometry.name] + groupby_plus_geometry_cols.append(by) + geometry = self[groupby_plus_geometry_cols].copy() # Process data aggregated_data = data.groupby(by=by).agg(aggfunc) diff --git a/tests/test_dissolve.py b/tests/test_dissolve.py index 8bac2ba..a0569d0 100644 --- a/tests/test_dissolve.py +++ b/tests/test_dissolve.py @@ -5,7 +5,8 @@ from shapely.geometry import Point from geopandas import GeoDataFrame, read_file from geopandas.tools import overlay from .util import unittest, download_nybb - +from pandas.util.testing import assert_frame_equal +from pandas import Index class TestDataFrame(unittest.TestCase): @@ -13,28 +14,39 @@ class TestDataFrame(unittest.TestCase): nybb_filename, nybb_zip_path = download_nybb() self.polydf = read_file(nybb_zip_path, vfs='zip://' + nybb_filename) + self.polydf = self.polydf[['geometry', 'BoroName', 'BoroCode']] self.polydf = self.polydf.rename(columns={'geometry':'myshapes'}) self.polydf = self.polydf.set_geometry('myshapes') - self.polydf['manhattan_bronx'] = 0 - self.polydf.loc[3:4,'manhattan_bronx']=1 + self.polydf['manhattan_bronx'] = 5 + self.polydf.loc[3:4,'manhattan_bronx']=6 # Merged geometry manhattan_bronx = self.polydf.loc[3:4,] others = self.polydf.loc[0:2,] - - self.merged_shapes = GeoDataFrame(columns=manhattan_bronx.columns) - self.merged_shapes.loc[0, 'myshapes'] = others.geometry.unary_union - self.merged_shapes.loc[1, 'myshapes'] = manhattan_bronx.geometry.unary_union - self.merged_shapes = self.merged_shapes.set_geometry('myshapes') + collapsed = [others.geometry.unary_union, manhattan_bronx.geometry.unary_union] + merged_shapes = GeoDataFrame({'myshapes': collapsed}, geometry='myshapes', + index=Index([5,6], name='manhattan_bronx')) + + # Different expected results + self.first = merged_shapes.copy() + self.first['BoroName'] = ['Staten Island', 'Manhattan'] + self.first['BoroCode'] = [5, 1] + + self.mean = merged_shapes.copy() + self.mean['BoroCode'] = [4,1.5] + def test_geom_dissolve(self): test = self.polydf.dissolve('manhattan_bronx') self.assertTrue(test.geometry.name == 'myshapes') + self.assertTrue(test.geom_almost_equals(self.first).all()) - known = self.merged_shapes.geometry - self.assertTrue(test.geometry.geom_almost_equals(known).all()) - + def test_first_dissolve(self): + test = self.polydf.dissolve('manhattan_bronx') + test = test.drop('myshapes', axis=1) + first = self.first.drop('myshapes', axis=1) + assert_frame_equal(first, test)