當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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