Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.asfreq方法的使用。

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

将TimeSeries转换为指定的频率。

可选择提供填充方法来填充/回填缺失值。

返回符合指定频率的新索引的原始数据。resample如果需要一个操作(如摘要)来表示新频率的数据,则更合适。

参数

freq : DateOffset对象或字符串

方法 : {'backfill'/'bfill','pad'/'ffill'},默认None

用于填充重建索引Series中的孔的方法(请注意,这不会填充已存在的NaN):

'pad'/'ffill':将最后一次有效结果传播到下一个有效

'backfill'/'bfill':使用NEXT有效结果来填充

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

仅适用于PeriodIndex,请参阅PeriodIndex.asfreq

normalize : bool,默认为False

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

fill_value : 标量,可选

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

版本0.20.0中的新功能。

返回

converted : 与调用者相同的类型

Notes,

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

例子,

首先创建一个包含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

将该series变为30秒的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

再次上传,提供一个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