pandas.DataFrame.asfreq#

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

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

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

如果此DataFrame的索引是 PeriodIndex ,新索引是使用 PeriodIndex.asfreq (因此,原始索引将一对一映射到新索引)。

否则,新索引将等同于 pd.date_range(start, end, freq=freq) 哪里 startend 分别是原始索引中的第一个和最后一个条目(请参见 pandas.date_range() )。与原始索引中不存在的新索引中的任何时间步相对应的值将为空 (NaN ),除非提供了填充此类未知数的方法(见 method 下面的参数)。

这个 resample() 如果需要对每组时间步长进行操作(如聚合)来以新频率表示数据,则方法更合适。

参数
freq日期偏移量或字符串

频率日期偏移量或字符串。

method{‘BACFILL’/‘bFILL’,‘PAD’/‘FILL’},默认为无

用于填充重新索引系列中的空洞的方法(请注意,这不会填充已存在的NAN):

  • ‘Pad’/‘ffill’:将上一个有效观测向前传播到下一个有效观测

  • “BackFill”/“bFill”:使用下一个要填充的有效观察。

how{‘开始’,‘结束’},默认结束

仅适用于周期索引(请参阅周期索引.asfreq)。

normalize布尔值,默认为False

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

fill_value标量,可选

用于在上采样期间应用的缺失值的值(请注意,这不会填充已存在的NAN)。

退货
DataFrame

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

参见

reindex

使用可选的填充逻辑使DataFrame符合新索引。

注意事项

要了解更多有关频率字符串的信息,请参阅 this link

示例

首先创建一个带有4个一分钟时间戳的系列。

>>> index = pd.date_range('1/1/2000', periods=4, freq='T')
>>> 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

将该系列向上采样到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