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

如何在Python中有效率地選擇特定日期範圍內的DataFrame行?

Patricia Arquette
Patricia Arquette原創
2024-12-13 13:11:09299瀏覽

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

選擇日期範圍內的 DataFrame 行

在 Python 中,DataFrame 是用於儲存和操作表格資料的強大工具。一項常見的任務是根據指定的日期範圍過濾行。為此,我們有以下選項:

方法 1:使用布林遮罩

如果您的 DataFrame 包含 datetime64[ns]資料類型的日期列,您可以建立布林遮罩來選擇落在所需範圍內的行range:

# Ensure date column is a datetime64 series
df['date'] = pd.to_datetime(df['date']) 

# Create a boolean mask
mask = (df['date'] > start_date) & (df['date'] <= end_date)

# Select the sub-DataFrame
sub_df = df.loc[mask]

方法二:設定DatetimeIndex

另一個有效的方法是將日期列設定為DataFrame的索引,建立一個DatetimeIndex:

df = df.set_index(['date'])

# Select rows using index slicing
sub_df = df.loc[start_date:end_date]

此方法對於頻繁的基於日期的選擇特別有用,因為與使用布林遮罩。

範例:

考慮以下DataFrame:

>>> df
            value  date
0          0.2   2021-06-01
1          0.3   2021-06-05
2          0.4   2021-06-10
3          0.5   2021-06-15

要選擇2021 年6 月的行,我們可以使用任一方法:

方法1:布爾值Mask

mask = (df['date'] > '2021-06-01') & (df['date'] <= '2021-06-30')
sub_df = df.loc[mask]

方法2:DatetimeIndex

df = df.set_index(['date'])
sub_df = df.loc['2021-06-01':'2021-06-30']

兩種方法都會返回以下子DataFrame:

>>> sub_df
            value  date
0          0.2   2021-06-01
1          0.3   2021-06-05
2          0.4   2021-06-10
3          0.5   2021-06-15

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

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