@@ -2075,15 +2075,15 @@ def pct_change(self, periods=1, fill_method='pad', limit=None, freq=None,
2075
2075
fill_method = fill_method ,
2076
2076
limit = limit , freq = freq ,
2077
2077
axis = axis ))
2078
- if fill_method :
2079
- new = self
2080
- new .obj = getattr (new , fill_method )(limit = limit )
2081
- else :
2082
- new = self
2083
2078
2084
- obj = new .obj .drop (self .grouper .names , axis = 1 )
2085
- shifted = new .shift (periods = periods , freq = freq )
2086
- return (obj / shifted ) - 1
2079
+ with _group_selection_context (self ) as new :
2080
+ if fill_method :
2081
+ new = copy .copy (new )
2082
+ new .obj = getattr (new , fill_method )(limit = limit )
2083
+
2084
+ obj = new .obj .drop (self .grouper .names , axis = 1 )
2085
+ shifted = new .shift (periods = periods , freq = freq )
2086
+ return (obj / shifted ) - 1
2087
2087
2088
2088
@Substitution (name = 'groupby' )
2089
2089
@Appender (_doc_template )
@@ -3946,12 +3946,14 @@ def _apply_to_column_groupbys(self, func):
3946
3946
3947
3947
def pct_change (self , periods = 1 , fill_method = 'pad' , limit = None , freq = None ):
3948
3948
"""Calcuate pct_change of each value to previous entry in group"""
3949
- if fill_method :
3950
- self .obj = getattr (self , fill_method )(limit = limit )
3951
- self ._reset_cache ('_selected_obj' )
3952
-
3953
- shifted = self .shift (periods = periods , freq = freq )
3954
- return (self .obj / shifted ) - 1
3949
+ with _group_selection_context (self ) as new :
3950
+ if fill_method :
3951
+ new = copy .copy (new )
3952
+ new .obj = getattr (new , fill_method )(limit = limit )
3953
+ new ._reset_cache ('_selected_obj' )
3954
+
3955
+ shifted = new .shift (periods = periods , freq = freq )
3956
+ return (new .obj / shifted ) - 1
3955
3957
3956
3958
3957
3959
class NDFrameGroupBy (GroupBy ):
0 commit comments