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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。