@@ -9948,11 +9948,24 @@ def _check_percentile(self, q):
9948
9948
"""
9949
9949
9950
9950
@Appender (_shared_docs ['pct_change' ] % _shared_doc_kwargs )
9951
- def pct_change (self , periods = 1 , fill_method = 'pad' , limit = None , freq = None ,
9952
- ** kwargs ):
9951
+ def pct_change (self , periods = 1 , fill_method = None , limit = None , freq = None ,
9952
+ skipna = False , ** kwargs ):
9953
+ if skipna and fill_method is not None :
9954
+ raise ValueError ("cannot pass both skipna and fill_method" )
9955
+ elif skipna and limit is not None :
9956
+ raise ValueError ("cannot pass both skipna and limit" )
9957
+ if skipna and self ._typ == 'dataframe' :
9958
+ return self .apply (
9959
+ lambda s : s .pct_change (periods = periods ,
9960
+ fill_method = fill_method , limit = limit ,
9961
+ freq = freq , skipna = skipna , ** kwargs )
9962
+ )
9953
9963
# TODO: Not sure if above is correct - need someone to confirm.
9954
9964
axis = self ._get_axis_number (kwargs .pop ('axis' , self ._stat_axis_name ))
9955
- if fill_method is None :
9965
+ if skipna :
9966
+ # mask = self.isna()
9967
+ data = self .dropna ()
9968
+ elif fill_method is None :
9956
9969
data = self
9957
9970
else :
9958
9971
data = self .fillna (method = fill_method , limit = limit , axis = axis )
@@ -9963,6 +9976,8 @@ def pct_change(self, periods=1, fill_method='pad', limit=None, freq=None,
9963
9976
if freq is None :
9964
9977
mask = isna (com .values_from_object (data ))
9965
9978
np .putmask (rs .values , mask , np .nan )
9979
+ if skipna :
9980
+ rs = rs .reindex_like (self )
9966
9981
return rs
9967
9982
9968
9983
def _agg_by_level (self , name , axis = 0 , level = 0 , skipna = True , ** kwargs ):
0 commit comments