From 8eff7db36a2a0de2c6be2159dc22fe460989195f Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 27 Mar 2018 09:45:59 -0700 Subject: [PATCH 01/12] Added test for FutureWarning --- pandas/tests/api/test_api.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pandas/tests/api/test_api.py b/pandas/tests/api/test_api.py index ea6c250420b13..41902ea30d685 100644 --- a/pandas/tests/api/test_api.py +++ b/pandas/tests/api/test_api.py @@ -238,7 +238,7 @@ def test_deprecation_cdaterange(self): cdate_range('2017-01-01', '2017-12-31') -class TestCategoricalMove(object): +class TestModuleMoves(object): def test_categorical_move(self): # May have been cached by another import, e.g. pickle tests. @@ -251,3 +251,16 @@ def test_categorical_move(self): with tm.assert_produces_warning(FutureWarning): from pandas.core.categorical import CategoricalDtype # noqa + + @pytest.mark.parametrize("attr", [ + "Grouper", "groupby", "BinGrouper", "Grouper", "_GroupBy", "GroupBy", + "SeriesGroupBy", "_pipe_template", "PanelGroupBy", "Grouping", + "SpecificationError", "DataError", "generate_bins_generic"]) + def test_groupby_move(self, attr): + # May have been cached by another import, e.g. pickle tests. + sys.modules.pop("pandas.core.groupby", None) + + with tm.assert_produces_warning(FutureWarning): + import pandas.core.groupby as grpby # noqa + + getattr(grpby, attr) From 37e5f1cf01fd61fc177149779599eccb8ca418c5 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 27 Mar 2018 09:56:36 -0700 Subject: [PATCH 02/12] Moved pandas.core.groupby to submodule --- pandas/core/groupby/__init__.py | 19 +++++++++++++++++++ pandas/core/{ => groupby}/groupby.py | 0 2 files changed, 19 insertions(+) create mode 100644 pandas/core/groupby/__init__.py rename pandas/core/{ => groupby}/groupby.py (100%) diff --git a/pandas/core/groupby/__init__.py b/pandas/core/groupby/__init__.py new file mode 100644 index 0000000000000..b779dc23cf89a --- /dev/null +++ b/pandas/core/groupby/__init__.py @@ -0,0 +1,19 @@ +import warnings + +# TODO: Remove after 0.XX.x +warnings.warn("'pandas.core.groupby' has moved. Use " + "'pandas.core.groupby.groupby' instead", FutureWarning, + stacklevel=2) + +from pandas.core.groupby.groupby import Grouper +from pandas.core.groupby.groupby import groupby +from pandas.core.groupby.groupby import BinGrouper +from pandas.core.groupby.groupby import _GroupBy +from pandas.core.groupby.groupby import GroupBy +from pandas.core.groupby.groupby import SeriesGroupBy +from pandas.core.groupby.groupby import _pipe_template +from pandas.core.groupby.groupby import PanelGroupBy +from pandas.core.groupby.groupby import Grouping +from pandas.core.groupby.groupby import SpecificationError +from pandas.core.groupby.groupby import DataError +from pandas.core.groupby.groupby import generate_bins_generic diff --git a/pandas/core/groupby.py b/pandas/core/groupby/groupby.py similarity index 100% rename from pandas/core/groupby.py rename to pandas/core/groupby/groupby.py From 6bd130140e9538eb1fc2615b87af79b3730eccc6 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 27 Mar 2018 10:03:09 -0700 Subject: [PATCH 03/12] LINT fixup --- pandas/core/groupby/__init__.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pandas/core/groupby/__init__.py b/pandas/core/groupby/__init__.py index b779dc23cf89a..2b373eca1e412 100644 --- a/pandas/core/groupby/__init__.py +++ b/pandas/core/groupby/__init__.py @@ -5,15 +5,15 @@ "'pandas.core.groupby.groupby' instead", FutureWarning, stacklevel=2) -from pandas.core.groupby.groupby import Grouper -from pandas.core.groupby.groupby import groupby -from pandas.core.groupby.groupby import BinGrouper -from pandas.core.groupby.groupby import _GroupBy -from pandas.core.groupby.groupby import GroupBy -from pandas.core.groupby.groupby import SeriesGroupBy -from pandas.core.groupby.groupby import _pipe_template -from pandas.core.groupby.groupby import PanelGroupBy -from pandas.core.groupby.groupby import Grouping -from pandas.core.groupby.groupby import SpecificationError -from pandas.core.groupby.groupby import DataError -from pandas.core.groupby.groupby import generate_bins_generic +from pandas.core.groupby.groupby import Grouper # noqa: F401 +from pandas.core.groupby.groupby import groupby # noqa: F401 +from pandas.core.groupby.groupby import BinGrouper # noqa: F401 +from pandas.core.groupby.groupby import _GroupBy # noqa: F401 +from pandas.core.groupby.groupby import GroupBy # noqa: F401 +from pandas.core.groupby.groupby import SeriesGroupBy # noqa: F401 +from pandas.core.groupby.groupby import _pipe_template # noqa: F401 +from pandas.core.groupby.groupby import PanelGroupBy # noqa: F401 +from pandas.core.groupby.groupby import Grouping # noqa: F401 +from pandas.core.groupby.groupby import SpecificationError # noqa: F401 +from pandas.core.groupby.groupby import DataError # noqa: F401 +from pandas.core.groupby.groupby import generate_bins_generic # noqa: F401 From ec8395ff3114e6f99cf871663331eb076f16fa15 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 27 Mar 2018 16:49:36 -0700 Subject: [PATCH 04/12] Added DataFrameGroupBy to module-level api --- pandas/core/groupby/__init__.py | 1 + pandas/tests/api/test_api.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pandas/core/groupby/__init__.py b/pandas/core/groupby/__init__.py index 2b373eca1e412..e35618e8acbaf 100644 --- a/pandas/core/groupby/__init__.py +++ b/pandas/core/groupby/__init__.py @@ -11,6 +11,7 @@ from pandas.core.groupby.groupby import _GroupBy # noqa: F401 from pandas.core.groupby.groupby import GroupBy # noqa: F401 from pandas.core.groupby.groupby import SeriesGroupBy # noqa: F401 +from pandas.core.groupby.groupby import DataFrameGroupBy # noqa: F401 from pandas.core.groupby.groupby import _pipe_template # noqa: F401 from pandas.core.groupby.groupby import PanelGroupBy # noqa: F401 from pandas.core.groupby.groupby import Grouping # noqa: F401 diff --git a/pandas/tests/api/test_api.py b/pandas/tests/api/test_api.py index 41902ea30d685..2738f179e1f8e 100644 --- a/pandas/tests/api/test_api.py +++ b/pandas/tests/api/test_api.py @@ -255,7 +255,8 @@ def test_categorical_move(self): @pytest.mark.parametrize("attr", [ "Grouper", "groupby", "BinGrouper", "Grouper", "_GroupBy", "GroupBy", "SeriesGroupBy", "_pipe_template", "PanelGroupBy", "Grouping", - "SpecificationError", "DataError", "generate_bins_generic"]) + "SpecificationError", "DataError", "generate_bins_generic", + "DataFrameGroupBy"]) def test_groupby_move(self, attr): # May have been cached by another import, e.g. pickle tests. sys.modules.pop("pandas.core.groupby", None) From 9acba5c62ff124e41b78f0dcd19774047d702d87 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Thu, 29 Mar 2018 08:30:13 -0700 Subject: [PATCH 05/12] Updated internal references to groupby --- pandas/core/api.py | 2 +- pandas/core/generic.py | 2 +- pandas/core/groupby/__init__.py | 15 ++------------- pandas/core/panel.py | 2 +- pandas/core/resample.py | 6 +++--- pandas/core/reshape/pivot.py | 2 +- pandas/tests/groupby/aggregate/test_aggregate.py | 2 +- pandas/tests/groupby/aggregate/test_cython.py | 2 +- pandas/tests/groupby/aggregate/test_other.py | 2 +- pandas/tests/groupby/test_bin_groupby.py | 2 +- pandas/tests/groupby/test_grouping.py | 2 +- pandas/tests/groupby/test_transform.py | 2 +- pandas/tests/test_resample.py | 2 +- 13 files changed, 16 insertions(+), 27 deletions(-) diff --git a/pandas/core/api.py b/pandas/core/api.py index aa37ddffa1156..640baf31268a7 100644 --- a/pandas/core/api.py +++ b/pandas/core/api.py @@ -7,7 +7,7 @@ from pandas.core.algorithms import factorize, unique, value_counts from pandas.core.dtypes.missing import isna, isnull, notna, notnull from pandas.core.arrays import Categorical -from pandas.core.groupby import Grouper +from pandas.core.groupby.groupby import Grouper from pandas.io.formats.format import set_eng_float_format from pandas.core.index import (Index, CategoricalIndex, Int64Index, UInt64Index, RangeIndex, Float64Index, diff --git a/pandas/core/generic.py b/pandas/core/generic.py index d5cd22732f0a9..e281a1a6a399d 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -6589,7 +6589,7 @@ def groupby(self, by=None, axis=0, level=None, as_index=True, sort=True, resample : Convenience method for frequency conversion and resampling of time series. """ - from pandas.core.groupby import groupby + from pandas.core.groupby.groupby import groupby if level is None and by is None: raise TypeError("You have to supply one of 'by' and 'level'") diff --git a/pandas/core/groupby/__init__.py b/pandas/core/groupby/__init__.py index e35618e8acbaf..ead1d9187b6bd 100644 --- a/pandas/core/groupby/__init__.py +++ b/pandas/core/groupby/__init__.py @@ -5,16 +5,5 @@ "'pandas.core.groupby.groupby' instead", FutureWarning, stacklevel=2) -from pandas.core.groupby.groupby import Grouper # noqa: F401 -from pandas.core.groupby.groupby import groupby # noqa: F401 -from pandas.core.groupby.groupby import BinGrouper # noqa: F401 -from pandas.core.groupby.groupby import _GroupBy # noqa: F401 -from pandas.core.groupby.groupby import GroupBy # noqa: F401 -from pandas.core.groupby.groupby import SeriesGroupBy # noqa: F401 -from pandas.core.groupby.groupby import DataFrameGroupBy # noqa: F401 -from pandas.core.groupby.groupby import _pipe_template # noqa: F401 -from pandas.core.groupby.groupby import PanelGroupBy # noqa: F401 -from pandas.core.groupby.groupby import Grouping # noqa: F401 -from pandas.core.groupby.groupby import SpecificationError # noqa: F401 -from pandas.core.groupby.groupby import DataError # noqa: F401 -from pandas.core.groupby.groupby import generate_bins_generic # noqa: F401 +from pandas.core.groupby.groupby import (Grouper, groups, # noqa: F401 + indices, get_group) diff --git a/pandas/core/panel.py b/pandas/core/panel.py index 7c087ac7deafc..e08d0a7368ccb 100644 --- a/pandas/core/panel.py +++ b/pandas/core/panel.py @@ -912,7 +912,7 @@ def groupby(self, function, axis='major'): ------- grouped : PanelGroupBy """ - from pandas.core.groupby import PanelGroupBy + from pandas.core.groupby.groupby import PanelGroupBy axis = self._get_axis_number(axis) return PanelGroupBy(self, function, axis=axis) diff --git a/pandas/core/resample.py b/pandas/core/resample.py index b3ab90fd67de4..0d6b0dff0a43d 100644 --- a/pandas/core/resample.py +++ b/pandas/core/resample.py @@ -7,9 +7,9 @@ import pandas as pd from pandas.core.base import GroupByMixin -from pandas.core.groupby import (BinGrouper, Grouper, _GroupBy, GroupBy, - SeriesGroupBy, groupby, PanelGroupBy, - _pipe_template) +from pandas.core.groupby.groupby import (BinGrouper, Grouper, _GroupBy, + GroupBy, SeriesGroupBy, groupby, + PanelGroupBy, _pipe_template) from pandas.tseries.frequencies import to_offset, is_subperiod, is_superperiod from pandas.core.indexes.datetimes import DatetimeIndex, date_range diff --git a/pandas/core/reshape/pivot.py b/pandas/core/reshape/pivot.py index a4c9848dca900..74a9b59d3194a 100644 --- a/pandas/core/reshape/pivot.py +++ b/pandas/core/reshape/pivot.py @@ -6,7 +6,7 @@ from pandas.core.reshape.concat import concat from pandas.core.series import Series -from pandas.core.groupby import Grouper +from pandas.core.groupby.groupby import Grouper from pandas.core.reshape.util import cartesian_product from pandas.core.index import Index, _get_objs_combined_axis from pandas.compat import range, lrange, zip diff --git a/pandas/tests/groupby/aggregate/test_aggregate.py b/pandas/tests/groupby/aggregate/test_aggregate.py index 7cc6c2fa7b88c..d85719d328ff2 100644 --- a/pandas/tests/groupby/aggregate/test_aggregate.py +++ b/pandas/tests/groupby/aggregate/test_aggregate.py @@ -10,7 +10,7 @@ import pandas as pd from pandas import concat, DataFrame, Index, MultiIndex, Series -from pandas.core.groupby import Grouping, SpecificationError +from pandas.core.groupby.groupby import Grouping, SpecificationError from pandas.compat import OrderedDict import pandas.util.testing as tm diff --git a/pandas/tests/groupby/aggregate/test_cython.py b/pandas/tests/groupby/aggregate/test_cython.py index cef3a699ed24b..80383c895a5e5 100644 --- a/pandas/tests/groupby/aggregate/test_cython.py +++ b/pandas/tests/groupby/aggregate/test_cython.py @@ -14,7 +14,7 @@ from pandas import (bdate_range, DataFrame, Index, Series, Timestamp, Timedelta, NaT) -from pandas.core.groupby import DataError +from pandas.core.groupby.groupby import DataError import pandas.util.testing as tm diff --git a/pandas/tests/groupby/aggregate/test_other.py b/pandas/tests/groupby/aggregate/test_other.py index 4c407ad8a0d93..7c6cb5b9615cb 100644 --- a/pandas/tests/groupby/aggregate/test_other.py +++ b/pandas/tests/groupby/aggregate/test_other.py @@ -18,7 +18,7 @@ from pandas import ( date_range, DataFrame, Index, MultiIndex, PeriodIndex, period_range, Series ) -from pandas.core.groupby import SpecificationError +from pandas.core.groupby.groupby import SpecificationError from pandas.io.formats.printing import pprint_thing import pandas.util.testing as tm diff --git a/pandas/tests/groupby/test_bin_groupby.py b/pandas/tests/groupby/test_bin_groupby.py index 979b2f7a539af..c293f49c5bc2a 100644 --- a/pandas/tests/groupby/test_bin_groupby.py +++ b/pandas/tests/groupby/test_bin_groupby.py @@ -54,7 +54,7 @@ def setup_method(self, method): self.bins = np.array([3, 6], dtype=np.int64) def test_generate_bins(self): - from pandas.core.groupby import generate_bins_generic + from pandas.core.groupby.groupby import generate_bins_generic values = np.array([1, 2, 3, 4, 5, 6], dtype=np.int64) binner = np.array([0, 3, 6, 9], dtype=np.int64) diff --git a/pandas/tests/groupby/test_grouping.py b/pandas/tests/groupby/test_grouping.py index 8702062e9cd0a..57becd342d370 100644 --- a/pandas/tests/groupby/test_grouping.py +++ b/pandas/tests/groupby/test_grouping.py @@ -340,7 +340,7 @@ def test_groupby_grouper_f_sanity_checked(self): pytest.raises(AssertionError, ts.groupby, lambda key: key[0:6]) def test_grouping_error_on_multidim_input(self): - from pandas.core.groupby import Grouping + from pandas.core.groupby.groupby import Grouping pytest.raises(ValueError, Grouping, self.df.index, self.df[['A', 'A']]) diff --git a/pandas/tests/groupby/test_transform.py b/pandas/tests/groupby/test_transform.py index bce38b8cf9eed..23326d1b105fe 100644 --- a/pandas/tests/groupby/test_transform.py +++ b/pandas/tests/groupby/test_transform.py @@ -13,7 +13,7 @@ from .common import MixIn, assert_fp_equal from pandas.util.testing import assert_frame_equal, assert_series_equal -from pandas.core.groupby import DataError +from pandas.core.groupby.groupby import DataError from pandas.core.config import option_context diff --git a/pandas/tests/test_resample.py b/pandas/tests/test_resample.py index 23cc18de34778..ef09b64d5b6eb 100644 --- a/pandas/tests/test_resample.py +++ b/pandas/tests/test_resample.py @@ -21,7 +21,7 @@ from pandas.core.dtypes.generic import ABCSeries, ABCDataFrame from pandas.compat import range, lrange, zip, product, OrderedDict from pandas.errors import UnsupportedFunctionCall -from pandas.core.groupby import DataError +from pandas.core.groupby.groupby import DataError import pandas.core.common as com from pandas.tseries.frequencies import to_offset From 1f20857977d51f4c48ff4f9a82125877128f0c29 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Thu, 29 Mar 2018 08:43:47 -0700 Subject: [PATCH 06/12] Cleaned up API and tests --- pandas/core/groupby/__init__.py | 3 +-- pandas/tests/api/test_api.py | 6 +----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/pandas/core/groupby/__init__.py b/pandas/core/groupby/__init__.py index ead1d9187b6bd..775f0e2fb8333 100644 --- a/pandas/core/groupby/__init__.py +++ b/pandas/core/groupby/__init__.py @@ -5,5 +5,4 @@ "'pandas.core.groupby.groupby' instead", FutureWarning, stacklevel=2) -from pandas.core.groupby.groupby import (Grouper, groups, # noqa: F401 - indices, get_group) +from pandas.core.groupby.groupby import Grouper # noqa: F401 diff --git a/pandas/tests/api/test_api.py b/pandas/tests/api/test_api.py index 2738f179e1f8e..5fc2700b95d52 100644 --- a/pandas/tests/api/test_api.py +++ b/pandas/tests/api/test_api.py @@ -252,11 +252,7 @@ def test_categorical_move(self): with tm.assert_produces_warning(FutureWarning): from pandas.core.categorical import CategoricalDtype # noqa - @pytest.mark.parametrize("attr", [ - "Grouper", "groupby", "BinGrouper", "Grouper", "_GroupBy", "GroupBy", - "SeriesGroupBy", "_pipe_template", "PanelGroupBy", "Grouping", - "SpecificationError", "DataError", "generate_bins_generic", - "DataFrameGroupBy"]) + @pytest.mark.parametrize("attr", ["Grouper"]) def test_groupby_move(self, attr): # May have been cached by another import, e.g. pickle tests. sys.modules.pop("pandas.core.groupby", None) From 7d29785d1573c8300520ebb1de2a68ceec007bca Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Thu, 29 Mar 2018 08:55:20 -0700 Subject: [PATCH 07/12] Cleaned up BinGrouper test reference --- pandas/tests/groupby/test_timegrouper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/groupby/test_timegrouper.py b/pandas/tests/groupby/test_timegrouper.py index d359bfa5351a9..1c1f5fe232e0f 100644 --- a/pandas/tests/groupby/test_timegrouper.py +++ b/pandas/tests/groupby/test_timegrouper.py @@ -81,7 +81,7 @@ def test_groupby_with_timegrouper_methods(self): df = df.set_index('Date', drop=False) g = df.groupby(pd.Grouper(freq='6M')) assert g.group_keys - assert isinstance(g.grouper, pd.core.groupby.BinGrouper) + assert isinstance(g.grouper, pd.core.groupby.groupby.BinGrouper) groups = g.groups assert isinstance(groups, dict) assert len(groups) == 3 From 2b2d59dcbb3006987f83c9e5b5988448e1d22134 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Thu, 29 Mar 2018 14:20:01 -0700 Subject: [PATCH 08/12] Dask support --- pandas/core/groupby/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/core/groupby/__init__.py b/pandas/core/groupby/__init__.py index 775f0e2fb8333..bef1c2eedd503 100644 --- a/pandas/core/groupby/__init__.py +++ b/pandas/core/groupby/__init__.py @@ -5,4 +5,5 @@ "'pandas.core.groupby.groupby' instead", FutureWarning, stacklevel=2) -from pandas.core.groupby.groupby import Grouper # noqa: F401 +from pandas.core.groupby.groupby import (Grouper, GroupBy, # noqa: F401 + SeriesGroupBy, DataFrameGroupBy) From 97f349a4a78a9306edfe0e48b37b8fac4b03aaa2 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Sun, 1 Apr 2018 17:55:56 -0700 Subject: [PATCH 09/12] Reverted deprecation --- pandas/core/groupby/__init__.py | 13 ++++--------- pandas/tests/api/test_api.py | 12 +----------- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/pandas/core/groupby/__init__.py b/pandas/core/groupby/__init__.py index bef1c2eedd503..4b2ebdf16b89b 100644 --- a/pandas/core/groupby/__init__.py +++ b/pandas/core/groupby/__init__.py @@ -1,9 +1,4 @@ -import warnings - -# TODO: Remove after 0.XX.x -warnings.warn("'pandas.core.groupby' has moved. Use " - "'pandas.core.groupby.groupby' instead", FutureWarning, - stacklevel=2) - -from pandas.core.groupby.groupby import (Grouper, GroupBy, # noqa: F401 - SeriesGroupBy, DataFrameGroupBy) +# flake8: noqa +from pandas.core.groupby.groupby import ( + Grouper, GroupBy, SeriesGroupBy, DataFrameGroupBy +) diff --git a/pandas/tests/api/test_api.py b/pandas/tests/api/test_api.py index 5fc2700b95d52..ea6c250420b13 100644 --- a/pandas/tests/api/test_api.py +++ b/pandas/tests/api/test_api.py @@ -238,7 +238,7 @@ def test_deprecation_cdaterange(self): cdate_range('2017-01-01', '2017-12-31') -class TestModuleMoves(object): +class TestCategoricalMove(object): def test_categorical_move(self): # May have been cached by another import, e.g. pickle tests. @@ -251,13 +251,3 @@ def test_categorical_move(self): with tm.assert_produces_warning(FutureWarning): from pandas.core.categorical import CategoricalDtype # noqa - - @pytest.mark.parametrize("attr", ["Grouper"]) - def test_groupby_move(self, attr): - # May have been cached by another import, e.g. pickle tests. - sys.modules.pop("pandas.core.groupby", None) - - with tm.assert_produces_warning(FutureWarning): - import pandas.core.groupby as grpby # noqa - - getattr(grpby, attr) From db4abbe4855f7f72c16a34dd86d7787ee7cfaa0a Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Sun, 1 Apr 2018 17:57:20 -0700 Subject: [PATCH 10/12] Added explicit import to fix test --- pandas/tests/groupby/test_timegrouper.py | 25 +++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/pandas/tests/groupby/test_timegrouper.py b/pandas/tests/groupby/test_timegrouper.py index 1c1f5fe232e0f..2a929f81182e6 100644 --- a/pandas/tests/groupby/test_timegrouper.py +++ b/pandas/tests/groupby/test_timegrouper.py @@ -57,11 +57,12 @@ def test_groupby_with_timegrouper(self): result3 = df.groupby(pd.Grouper(freq='5D')).sum() assert_frame_equal(result3, expected) - def test_groupby_with_timegrouper_methods(self): + @pytest.mark.parametrize("should_sort", [True, False]) + def test_groupby_with_timegrouper_methods(self, should_sort): # GH 3881 # make sure API of timegrouper conforms - df_original = pd.DataFrame({ + df = pd.DataFrame({ 'Branch': 'A A A A A B'.split(), 'Buyer': 'Carl Mark Carl Joe Joe Carl'.split(), 'Quantity': [1, 3, 5, 8, 9, 3], @@ -75,16 +76,18 @@ def test_groupby_with_timegrouper_methods(self): ] }) - df_sorted = df_original.sort_values(by='Quantity', ascending=False) + if should_sort: + df = df.sort_values(by='Quantity', ascending=False) - for df in [df_original, df_sorted]: - df = df.set_index('Date', drop=False) - g = df.groupby(pd.Grouper(freq='6M')) - assert g.group_keys - assert isinstance(g.grouper, pd.core.groupby.groupby.BinGrouper) - groups = g.groups - assert isinstance(groups, dict) - assert len(groups) == 3 + df = df.set_index('Date', drop=False) + g = df.groupby(pd.Grouper(freq='6M')) + assert g.group_keys + + import pd.core.groupby.groupby + assert isinstance(g.grouper, pd.core.groupby.groupby.BinGrouper) + groups = g.groups + assert isinstance(groups, dict) + assert len(groups) == 3 def test_timegrouper_with_reg_groups(self): From da6f6765f3d1d6eebee5017a4473d92bbe894391 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Sun, 1 Apr 2018 18:02:23 -0700 Subject: [PATCH 11/12] Updated import formatting --- pandas/core/resample.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pandas/core/resample.py b/pandas/core/resample.py index 0d6b0dff0a43d..0d0023b9f67d3 100644 --- a/pandas/core/resample.py +++ b/pandas/core/resample.py @@ -7,9 +7,10 @@ import pandas as pd from pandas.core.base import GroupByMixin -from pandas.core.groupby.groupby import (BinGrouper, Grouper, _GroupBy, - GroupBy, SeriesGroupBy, groupby, - PanelGroupBy, _pipe_template) +from pandas.core.groupby.groupby import ( + BinGrouper, Grouper, _GroupBy, GroupBy, SeriesGroupBy, groupby, + PanelGroupBy, _pipe_template +) from pandas.tseries.frequencies import to_offset, is_subperiod, is_superperiod from pandas.core.indexes.datetimes import DatetimeIndex, date_range From 762431385b4116511d8356bb9b4def8a29035c3c Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Sun, 1 Apr 2018 21:03:02 -0700 Subject: [PATCH 12/12] Changed import ref to use full pandas name --- pandas/tests/groupby/test_timegrouper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/tests/groupby/test_timegrouper.py b/pandas/tests/groupby/test_timegrouper.py index 2a929f81182e6..17ca5d31b6b59 100644 --- a/pandas/tests/groupby/test_timegrouper.py +++ b/pandas/tests/groupby/test_timegrouper.py @@ -83,8 +83,8 @@ def test_groupby_with_timegrouper_methods(self, should_sort): g = df.groupby(pd.Grouper(freq='6M')) assert g.group_keys - import pd.core.groupby.groupby - assert isinstance(g.grouper, pd.core.groupby.groupby.BinGrouper) + import pandas.core.groupby.groupby + assert isinstance(g.grouper, pandas.core.groupby.groupby.BinGrouper) groups = g.groups assert isinstance(groups, dict) assert len(groups) == 3