Pandas2.2 Series
Time Series-related
方法 | 描述 |
---|---|
Series.asfreq(freq[, method, how, …]) | 用于將時間序列數據轉換為指定的頻率 |
Series.asof(where[, subset]) | 用于返回時間序列中指定索引位置的最近一個非缺失值 |
pandas.Series.asof
pandas.Series.asof
方法用于返回時間序列中指定索引位置的最近一個非缺失值。它特別適用于處理不規則時間間隔的數據,可以找到在給定時間點之前最近的有效(非缺失)觀測值。
詳細描述
- 參數:
where
: 類似數組或標量,表示要查詢的時間點或時間點列表。subset
: 可選,默認為None
。如果提供,則只考慮這些列中的非缺失值來確定最近的有效行。
返回值
- 返回一個新的
Series
或標量值,具體取決于where
參數:- 如果
where
是標量,則返回標量值。 - 如果
where
是數組,則返回與where
形狀相同的Series
。
- 如果
示例代碼及結果
import pandas as pd
import numpy as np# 創建一個帶有日期索引的時間序列,包含一些缺失值
dates = pd.to_datetime(['2023-10-01', '2023-10-03', '2023-10-05', '2023-10-07', '2023-10-09'])
s = pd.Series([1, 2, np.nan, 4, 5], index=dates)print("原始 Series:")
print(s)# 查詢特定時間點的最近非缺失值
query_date_1 = pd.Timestamp('2023-10-04')
result_1 = s.asof(query_date_1)print("\n查詢 2023-10-04 的最近非缺失值:")
print(result_1)# 查詢多個時間點的最近非缺失值
query_dates = pd.to_datetime(['2023-10-02', '2023-10-06', '2023-10-10'])
result_2 = s.asof(query_dates)print("\n查詢多個時間點的最近非缺失值:")
print(result_2)
輸出結果
原始 Series:
2023-10-01 1
2023-10-03 2
2023-10-05 3
2023-10-07 4
2023-10-09 5
Freq: 2D, dtype: int64轉換為每日頻率并前向填充后的 Series:
2023-10-01 1
2023-10-02 1
2023-10-03 2
2023-10-04 2
2023-10-05 3
2023-10-06 3
2023-10-07 4
2023-10-08 4
2023-10-09 5
Freq: D, dtype: int64
結果解釋
- 在示例中,原始
Series
包含一些缺失值 (NaN
)。 - 使用
asof
方法查詢特定時間點(如2023-10-04
)時,它會返回該時間點之前最近的非缺失值,即2.0
。 - 對于多個時間點的查詢,
asof
方法返回每個時間點之前最近的非缺失值:2023-10-02
之前最近的非缺失值是1.0
。2023-10-06
之前最近的非缺失值是2.0
。2023-10-10
之前最近的非缺失值是5.0
。
這種方法非常適用于金融數據等需要處理不規則時間間隔和缺失值的場景。