首頁 >後端開發 >Python教學 >如何在 Pandas 中高效選擇特定日期範圍內的 DataFrame 行?

如何在 Pandas 中高效選擇特定日期範圍內的 DataFrame 行?

Patricia Arquette
Patricia Arquette原創
2024-12-14 08:36:16333瀏覽

How to Efficiently Select DataFrame Rows Within a Specific Date Range in Pandas?

選擇兩個日期之間的DataFrame 行

簡介

處理時間序列資料時,通常需要根據日期範圍選擇特定行。本文探討了在 pandas DataFrames 中實現此目的的兩種方法。

方法 1:布林遮罩

  1. 確保日期欄位是 dtype 的 Series datetime64[ns]:

    df['date'] = pd.to_datetime(df['date'])
  2. 使用比較運算子與開始日期和結束日期建立布林遮罩:

    mask = (df['date'] > start_date) & (df['date'] <= end_date)
  3. 選擇子DataFrame使用mask:

    df.loc[mask]
  4. (可選)將子 DataFrame 重新指派給 df。

方法2:DatetimeIndex

  1. 將日期欄位設定為索引:

    df = df.set_index(['date'])
  2. 將日期欄位設為
  3. 使用日期範圍對DataFrame進行切片:

    df.loc[start_date:end_date]

範例

考慮一個有日期列的 DataFrame。以下程式碼使用布林遮罩方法選擇 '2000-06-01' 和 '2000-06-10' 之間的行:

import pandas as pd

df = pd.DataFrame({
    'date': pd.date_range('2000-1-1', periods=200, freq='D'),
    'value': np.random.rand(200)
})

mask = (df['date'] > '2000-06-01') & (df['date'] <= '2000-06-10')
result_df = df[mask]
結果包括從 6 月 1 日到 10 日的行, 2000.

比較

    布林遮罩方法更靈活,允許更複雜的日期比較。
  • DatetimeIndex 方法更快用於重複的日期範圍選擇。
  • 在中使用 parse_dates pd.read_csv 可以省去將日期列轉換為 datetime64s 的需要。

以上是如何在 Pandas 中高效選擇特定日期範圍內的 DataFrame 行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn