首頁 > 後端開發 > Python教學 > 如何以日期範圍有效過濾 DataFrame 行?

如何以日期範圍有效過濾 DataFrame 行?

Barbara Streisand
發布: 2024-12-12 16:30:11
原創
928 人瀏覽過

How to Efficiently Filter DataFrame Rows by Date Range?

查詢指定日期範圍內的DataFrame 行

此問題解決了從包含以下內容的DataFrame 中提取特定日期範圍內的行的挑戰:日期欄。提供的解決方案提供了兩種實現此目的的方法。

方法 1:使用布林遮罩

要採用此方法,請確保 DataFrame 中的「日期」代表資料類型為 datetime64[ns] 的系列。採用以下步驟:

  1. 建立布林遮罩:指定 start_date 和 end_date 參數,可以是 datetime.datetimes、np.datetime64s、pd.Timestamps 或 datetime 字串。構造一個布林掩碼,對於滿足日期範圍條件的行,其計算結果為 True。
  2. 選擇子資料幀: 使用 df.loc[mask] 提取通過遮罩條件的行。或者,要覆寫現有的 DataFrame,請將遮罩應用為 df = df.loc[mask].

方法 2:分配DatetimeIndex

最優涉及頻繁選擇日期的場景,此方法涉及將日期列設置為index:

  1. 設置DatetimeIndex: 使用df. set_index(['date']) 將日期列轉換為DatetimeIndex。
  2. 選擇行按日期: 利用 df.loc[start_date:end_date] 依照日期範圍過濾行。請注意,此選擇中包含 start_date 和 end_date。

範例:

利用回應中提供的程式碼,請考慮以下插圖:

import pandas as pd

df = pd.DataFrame({'date': pd.date_range('2023-03-01', periods=10)})
df['value'] = np.random.randn(10)

# Boolean Mask Approach
start_date = '2023-03-03'
end_date = '2023-03-08'
mask = (df['date'] > start_date) & (df['date'] <= end_date)
df_subset = df.loc[mask]

# DatetimeIndex Approach
df = df.set_index('date')
df_subset = df.loc[start_date:end_date]
登入後複製

這將產生兩個DataFrame ,其中包含與指定日期對應的行範圍。

以上是如何以日期範圍有效過濾 DataFrame 行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板