Pandas DataFrame.asfreq(~)
方法返回 DataFrame 以及符合指定频率的新时间索引。
参数
1.freq
| DateOffset
或 string
用于创建新时间索引的频率。
2. method
| None
或 string
| optional
填充结果 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
才会被填充。
相关用法
- Python Pandas DataFrame asof方法用法及代码示例
- Python Pandas DataFrame astype方法用法及代码示例
- Python Pandas DataFrame assign方法用法及代码示例
- Python Pandas DataFrame agg方法用法及代码示例
- Python Pandas DataFrame all方法用法及代码示例
- Python Pandas DataFrame add方法用法及代码示例
- Python Pandas DataFrame any方法用法及代码示例
- Python PySpark DataFrame alias方法用法及代码示例
- Python Pandas DataFrame append方法用法及代码示例
- Python Pandas DataFrame add_prefix方法用法及代码示例
- Python Pandas DataFrame add_suffix方法用法及代码示例
- Python Pandas DataFrame at属性用法及代码示例
- Python Pandas DataFrame axes属性用法及代码示例
- Python Pandas DataFrame align方法用法及代码示例
- Python Pandas DataFrame apply方法用法及代码示例
- Python Pandas DataFrame applymap方法用法及代码示例
- Python Pandas DataFrame at_time方法用法及代码示例
- Python Pandas DataFrame abs方法用法及代码示例
- Python Pandas DataFrame empty属性用法及代码示例
- Python Pandas DataFrame pop方法用法及代码示例
- Python Pandas DataFrame nsmallest方法用法及代码示例
- Python Pandas DataFrame sample方法用法及代码示例
- Python Pandas DataFrame items方法用法及代码示例
- Python Pandas DataFrame max方法用法及代码示例
- Python Pandas DataFrame swaplevel方法用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | asfreq method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。