pandas.DataFrame.asfreq#
- DataFrame.asfreq(freq, method=None, how=None, normalize=False, fill_value=None)[来源]#
将时间序列转换为指定频率。
返回原始数据,以指定频率符合新索引。
如果此 Series/DataFrame 的索引是
PeriodIndex,则新索引是通过使用PeriodIndex.asfreq转换原始索引的结果(因此原始索引将一对一映射到新索引)。否则,新索引将等效于
pd.date_range(start, end, freq=freq),其中start和end分别是原始索引中的最小和最大条目(请参阅pandas.date_range())。新索引中那些在原始索引中不存在的时间步长所对应的值将为空(NaN),除非提供了填充这些未知值的方法(请参阅下面的method参数)。如果需要在每个时间步长组上进行操作(例如聚合)才能以新频率表示数据,那么
resample()方法更合适。- 参数:
- freqDateOffset 或 str
频率 DateOffset 或字符串。
- method{{‘backfill’/‘bfill’, ‘pad’/’ffill’}}, default None
用于填充重新索引的 Series 中的缺失值的(注意这不会填充已存在的 NaN)。
‘pad’ / ‘ffill’:根据索引的顺序,将最后一个有效观测值向前传播到下一个有效观测值。
‘backfill’ / ‘bfill’:使用下一个有效观测值进行填充。
- how{{‘start’, ‘end’}}, default 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