ホームページ > バックエンド開発 > Python チュートリアル > データフレーム行を日付範囲で効率的にフィルタリングする方法

データフレーム行を日付範囲で効率的にフィルタリングする方法

Barbara Streisand
リリース: 2024-12-12 16:30:11
オリジナル
926 人が閲覧しました

How to Efficiently Filter DataFrame Rows by Date Range?

指定された日付範囲内のデータフレーム行をクエリする

この質問は、データフレームから特定の日付範囲内の行を抽出するという課題に対処します。日付列。提供されているソリューションでは、これを実現するための 2 つのアプローチが提供されています。

方法 1: ブール マスクを使用する

この方法を採用するには、DataFrame の 'date' がdtype datetime64[ns] のシリーズ。次の手順を実行します:

  1. ブール マスクを作成します: start_date パラメーターと end_date パラメーター (datetime.datetimes、np.datetime64s、pd.Timestamps、または datetime 文字列) を指定します。日付範囲基準を満たす行に対して True と評価されるブール マスクを構築します。
  2. Select Sub-DataFrame: df.loc[mask] を使用して、マスク条件に合格する行を抽出します。 。あるいは、既存の DataFrame を上書きするには、マスクを df = df.loc[mask] として適用します。

方法 2: DatetimeIndex を割り当てる

頻繁に日付を選択するシナリオの場合、このアプローチには日付列をIndex:

  1. Set DatetimeIndex: df.set_index(['date']) を使用して日付列を DatetimeIndex に変換します。
  2. 行の選択by Date: 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]
ログイン後にコピー

これにより、指定された日付に対応する行を含む 2 つの DataFrame が生成されます。範囲。

以上がデータフレーム行を日付範囲で効率的にフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート