pandas.core.resample.Resampler.fillna#
- final Resampler.fillna(method, limit=None)[source]#
- Fill missing values introduced by upsampling. - In statistics, imputation is the process of replacing missing data with substituted values [1]. When resampling data, missing values may appear (e.g., when the resampling frequency is higher than the original frequency). - Missing values that existed in the original data will not be modified. - Parameters:
- method{‘pad’, ‘backfill’, ‘ffill’, ‘bfill’, ‘nearest’}
- Method to use for filling holes in resampled data - ‘pad’ or ‘ffill’: use previous valid observation to fill gap (forward fill). 
- ‘backfill’ or ‘bfill’: use next valid observation to fill gap. 
- ‘nearest’: use nearest valid observation to fill gap. 
 
- limitint, optional
- Limit of how many consecutive missing values to fill. 
 
- Returns:
- Series or DataFrame
- An upsampled Series or DataFrame with missing values filled. 
 
 - See also - bfill
- Backward fill NaN values in the resampled data. 
- ffill
- Forward fill NaN values in the resampled data. 
- nearest
- Fill NaN values in the resampled data with nearest neighbor starting from center. 
- interpolate
- Fill NaN values using interpolation. 
- Series.fillna
- Fill NaN values in the Series using the specified method, which can be ‘bfill’ and ‘ffill’. 
- DataFrame.fillna
- Fill NaN values in the DataFrame using the specified method, which can be ‘bfill’ and ‘ffill’. 
 - References - Examples - Resampling a Series: - >>> s = pd.Series([1, 2, 3], ... index=pd.date_range('20180101', periods=3, freq='h')) >>> s 2018-01-01 00:00:00 1 2018-01-01 01:00:00 2 2018-01-01 02:00:00 3 Freq: h, dtype: int64 - Without filling the missing values you get: - >>> s.resample("30min").asfreq() 2018-01-01 00:00:00 1.0 2018-01-01 00:30:00 NaN 2018-01-01 01:00:00 2.0 2018-01-01 01:30:00 NaN 2018-01-01 02:00:00 3.0 Freq: 30min, dtype: float64 - >>> s.resample('30min').fillna("backfill") 2018-01-01 00:00:00 1 2018-01-01 00:30:00 2 2018-01-01 01:00:00 2 2018-01-01 01:30:00 3 2018-01-01 02:00:00 3 Freq: 30min, dtype: int64 - >>> s.resample('15min').fillna("backfill", limit=2) 2018-01-01 00:00:00 1.0 2018-01-01 00:15:00 NaN 2018-01-01 00:30:00 2.0 2018-01-01 00:45:00 2.0 2018-01-01 01:00:00 2.0 2018-01-01 01:15:00 NaN 2018-01-01 01:30:00 3.0 2018-01-01 01:45:00 3.0 2018-01-01 02:00:00 3.0 Freq: 15min, dtype: float64 - >>> s.resample('30min').fillna("pad") 2018-01-01 00:00:00 1 2018-01-01 00:30:00 1 2018-01-01 01:00:00 2 2018-01-01 01:30:00 2 2018-01-01 02:00:00 3 Freq: 30min, dtype: int64 - >>> s.resample('30min').fillna("nearest") 2018-01-01 00:00:00 1 2018-01-01 00:30:00 2 2018-01-01 01:00:00 2 2018-01-01 01:30:00 3 2018-01-01 02:00:00 3 Freq: 30min, dtype: int64 - Missing values present before the upsampling are not affected. - >>> sm = pd.Series([1, None, 3], ... index=pd.date_range('20180101', periods=3, freq='h')) >>> sm 2018-01-01 00:00:00 1.0 2018-01-01 01:00:00 NaN 2018-01-01 02:00:00 3.0 Freq: h, dtype: float64 - >>> sm.resample('30min').fillna('backfill') 2018-01-01 00:00:00 1.0 2018-01-01 00:30:00 NaN 2018-01-01 01:00:00 NaN 2018-01-01 01:30:00 3.0 2018-01-01 02:00:00 3.0 Freq: 30min, dtype: float64 - >>> sm.resample('30min').fillna('pad') 2018-01-01 00:00:00 1.0 2018-01-01 00:30:00 1.0 2018-01-01 01:00:00 NaN 2018-01-01 01:30:00 NaN 2018-01-01 02:00:00 3.0 Freq: 30min, dtype: float64 - >>> sm.resample('30min').fillna('nearest') 2018-01-01 00:00:00 1.0 2018-01-01 00:30:00 NaN 2018-01-01 01:00:00 NaN 2018-01-01 01:30:00 3.0 2018-01-01 02:00:00 3.0 Freq: 30min, dtype: float64 - DataFrame resampling is done column-wise. All the same options are available. - >>> df = pd.DataFrame({'a': [2, np.nan, 6], 'b': [1, 3, 5]}, ... index=pd.date_range('20180101', periods=3, ... freq='h')) >>> df a b 2018-01-01 00:00:00 2.0 1 2018-01-01 01:00:00 NaN 3 2018-01-01 02:00:00 6.0 5 - >>> df.resample('30min').fillna("bfill") a b 2018-01-01 00:00:00 2.0 1 2018-01-01 00:30:00 NaN 3 2018-01-01 01:00:00 NaN 3 2018-01-01 01:30:00 6.0 5 2018-01-01 02:00:00 6.0 5