Skip to main content
`Ctrl`+`K`

# pandas.DataFrame.asfreq

DataFrame.asfreq(freq, method=None, how=None, normalize=False, fill_value=None)

  Convert time series to specified frequency.

  Returns the original data conformed to a new index with the specified frequency.

  If the index of this Series/DataFrame is a `PeriodIndex`, the new index is the result of transforming the original index with `PeriodIndex.asfreq` (so the original index will map one-to-one to the new index).

  Otherwise, the new index will be equivalent to `pd.date_range(start, end, freq=freq)` where `start` and `end` are, respectively, the min and max entries in the original index (see `pandas.date_range()`). The values corresponding to any timesteps in the new index which were not present in the original index will be null (`NaN`), unless a method for filling such unknowns is provided (see the `method` parameter below).

  The `resample()` method is more appropriate if an operation on each group of timesteps (such as an aggregate) is necessary to represent the data at the new frequency.

  Parameters:
    freq DateOffset or str

      Frequency DateOffset or string.

    method{{‘backfill’/’bfill’, ‘pad’/’ffill’}}, default None

      Method to use for filling holes in reindexed Series (note this does not fill NaNs that already were present):

      - ‘pad’ / ‘ffill’: propagate last valid observation forward to next valid based on the order of the index

      - ‘backfill’ / ‘bfill’: use NEXT valid observation to fill.

    how{{‘start’, ‘end’}}, default end

      For PeriodIndex only (see PeriodIndex.asfreq).

    normalize bool, default False

      Whether to reset output index to midnight.

    fill_value scalar, optional

      Value to use for missing values, applied during upsampling (note this does not fill NaNs that already were present).

  Returns:
    Series/DataFrame

      Series/DataFrame object reindexed to the specified frequency.

  See also

  `reindex`

    Conform DataFrame to new index with optional filling logic.

  Notes

  To learn more about the frequency strings, please see this link.

  Examples

  Start by creating a series with 4 one minute timestamps.

      >>> index = pd.date_range("1/1/2000", periods=4, freq="min")
      >>> series = pd.Series([0.0, None, 2.0, 3.0], index=index)
      >>> df = pd.DataFrame({"s": series})
      >>> df
                             s
      2000-01-01 00:00:00    0.0
      2000-01-01 00:01:00    NaN
      2000-01-01 00:02:00    2.0
      2000-01-01 00:03:00    3.0

  Upsample the series into 30 second bins.

      >>> df.asfreq(freq="30s")
                             s
      2000-01-01 00:00:00    0.0
      2000-01-01 00:00:30    NaN
      2000-01-01 00:01:00    NaN
      2000-01-01 00:01:30    NaN
      2000-01-01 00:02:00    2.0
      2000-01-01 00:02:30    NaN
      2000-01-01 00:03:00    3.0

  Upsample again, providing a `fill value`.

      >>> df.asfreq(freq="30s", fill_value=9.0)
                             s
      2000-01-01 00:00:00    0.0
      2000-01-01 00:00:30    9.0
      2000-01-01 00:01:00    NaN
      2000-01-01 00:01:30    9.0
      2000-01-01 00:02:00    2.0
      2000-01-01 00:02:30    9.0
      2000-01-01 00:03:00    3.0

  Upsample again, providing a `method`.

      >>> df.asfreq(freq="30s", method="bfill")
                             s
      2000-01-01 00:00:00    0.0
      2000-01-01 00:00:30    NaN
      2000-01-01 00:01:00    NaN
      2000-01-01 00:01:30    2.0
      2000-01-01 00:02:00    2.0
      2000-01-01 00:02:30    3.0
      2000-01-01 00:03:00    3.0