当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Pandas DataFrame asfreq方法用法及代码示例


Pandas DataFrame.asfreq(~) 方法返回 DataFrame 以及符合指定频率的新时间索引。

参数

1.freq | DateOffsetstring

用于创建新时间索引的频率。

2. method | Nonestring | optional

填充结果 NaN 的方法:

说明

"bfill"

或者

"backfill"

填写下一个有效的观察结果。

"ffill""pad"

填写之前的有效观察结果。

None

保持 NaN 完好无损。

默认情况下,method=None

3. normalize | boolean | optional

是否将一天中的时间设置为午夜。默认情况下,normalize=False

4. fill_value | scalar | optional

用于填充缺失值的值。请注意,源 DataFrame 中存在的缺失值将不会被填充 - 只有由于此方法而出现的值才会被填充。默认情况下,fill_value=None

返回值

具有符合指定频率的新时间索引的 DataFrame

例子

考虑以下 DataFrame :

index_date = pd.date_range("2020-12-25", periods=3, freq="T")
df = pd.DataFrame({"A":[1,2,3],"B":[4,5,6]}, index=index_date)
df



                     A  B
2020-12-25 00:00:00  1  4
2020-12-25 00:01:00  2  5
2020-12-25 00:02:00  3  6

基本用法

设置频率为 30 秒的新时间索引:

df.asfreq(freq="30S")



                     A    B
2020-12-25 00:00:00  1.0  4.0
2020-12-25 00:00:30  NaN  NaN
2020-12-25 00:01:00  2.0  5.0
2020-12-25 00:01:30  NaN  NaN
2020-12-25 00:02:00  3.0  6.0

我们获得某些行的 NaN 的原因是它们的索引不存在于源 DataFrame df 中。例如,我们得到第二行的NaN,因为df不包含索引为2020-12-25 00:00:30的行。

灌装方式

None

默认情况下, method=None ,这意味着新值将被标记为 NaN 并且不会应用任何填充规则:

df.asfreq(freq="30S")   # method=None



                     A    B
2020-12-25 00:00:00  1.0  4.0
2020-12-25 00:00:30  NaN  NaN
2020-12-25 00:01:00  2.0  5.0
2020-12-25 00:01:30  NaN  NaN
2020-12-25 00:02:00  3.0  6.0
填充

要使用之前的有效观察进行填充:

df.asfreq(freq="30S", method="ffill")



                     A  B
2020-12-25 00:00:00  1  4
2020-12-25 00:00:30  1  4
2020-12-25 00:01:00  2  5
2020-12-25 00:01:30  2  5
2020-12-25 00:02:00  3  6
填充

要使用下一个有效观察来填充:

df.asfreq(freq="30S", method="bfill")



                     A  B
2020-12-25 00:00:00  1  4
2020-12-25 00:00:30  2  5
2020-12-25 00:01:00  2  5
2020-12-25 00:01:30  3  6
2020-12-25 00:02:00  3  6

index标准化

考虑以下 DataFrame :

index_date = pd.date_range("2020-12-25", periods=3, freq="T")
df = pd.DataFrame({"A":[1,2,3],"B":[4,5,6]}, index=index_date)
df



                     A  B
2020-12-25 00:00:00  1  4
2020-12-25 00:01:00  2  5
2020-12-25 00:02:00  3  6

要将一天中的时间重置为午夜,请设置 normalize=True

df.asfreq(freq="MIN", normalize=True)



             A  B
2020-12-25   1  4
2020-12-25   2  5
2020-12-25   3  6

指定填充值

考虑与上面相同的df

df



                     A  B
2020-12-25 00:00:00  1  4
2020-12-25 00:01:00  2  5
2020-12-25 00:02:00  3  6

我们可以使用 fill_value 选择要填充的值,而不是默认的 NaN

df.asfreq(freq="30S", fill_value=0)



                     A  B
2020-12-25 00:00:00  1  4
2020-12-25 00:00:30  0  0
2020-12-25 00:01:00  2  5
2020-12-25 00:01:30  0  0
2020-12-25 00:02:00  3  6

当NaNs已存在于DataFrame中时的情况

考虑以下 DataFrame :

index_date = pd.date_range("2020-12-25", periods=3, freq="T")
df = pd.DataFrame({"A":[1,2,3],"B":[4,5,pd.np.NaN]}, index=index_date)
df



                     A  B
2020-12-25 00:00:00  1  4.0
2020-12-25 00:01:00  2  5.0
2020-12-25 00:02:00  3  NaN

在这里,我们的 df 有一个 NaN

调用asfreq(~)方法:

df.asfreq(freq="30S", fill_value=8)



                     A  B
2020-12-25 00:00:00  1  4.0
2020-12-25 00:00:30  8  8.0
2020-12-25 00:01:00  2  5.0
2020-12-25 00:01:30  8  8.0
2020-12-25 00:02:00  3  NaN

请注意原始NaN 未被填充。 - 只有由于该方法而产生的NaN才会被填充。

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | asfreq method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。