pandas.Series.asfreq#

Series.asfreq(freq, method=None, how=None, normalize=False, fill_value=None)[源代码]#

将时间序列转换为指定频率。

返回符合指定频率的新索引的原始数据。

如果此 Series/DataFrame 的索引是 PeriodIndex,则新索引是通过使用 PeriodIndex.asfreq 转换原始索引的结果(因此原始索引将与新索引一一对应)。

否则,新索引将等同于 pd.date_range(start, end, freq=freq),其中 startend 分别是原始索引中的最小值和最大值(请参阅 pandas.date_range())。新索引中任何未在原始索引中出现的日期/时间点对应的值将为空(NaN),除非提供了用于填充此类未知值的方法(请参阅下面的 method 参数)。

如果需要在每个时间段组上执行操作(例如聚合)以在新频率下表示数据,则 resample() 方法更为合适。

参数:
freqDateOffset 或 str

频率 DateOffset 或字符串。

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

用于填充重新索引的 Series 中的空缺的方法(请注意,这不会填充已存在的 NaN)。

  • ‘pad’ / ‘ffill’:根据索引的顺序将最后一个有效观测值向前传播到下一个有效值。

  • ‘backfill’ / ‘bfill’:使用下一个有效观测值进行填充。

how{{‘start’, ‘end’}}, 默认 end

仅适用于 PeriodIndex(请参阅 PeriodIndex.asfreq)。

normalizebool,默认为 False

是否将输出索引重置为午夜。

fill_valuescalar, optional

用于缺失值的数值,在升采样时应用(请注意,这不会填充已存在的 NaN)。

返回:
Series/DataFrame

已重新索引到指定频率的 Series/DataFrame 对象。

另请参阅

reindex

使用可选的填充逻辑将 DataFrame 匹配到新索引。

注意

要了解更多关于频率字符串的信息,请参阅 此链接

示例

首先创建一个具有 4 个一分钟时间戳的 Series。

>>> 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

将 Series 按 30 秒的间隔升采样。

>>> 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

再次升采样,提供一个 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

再次升采样,提供一个 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