Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Pandas – 2つの日付の間でDataFrameをフィルタリングする方法

Pandasで特定の2つの日付の間にあるデータだけを抽出したい場合は、dataframe.locを使うのが便利です。比較演算子と論理演算子を組み合わせることで、日付範囲によるフィルタリングをシンプルに実現できます。

まず、必要なライブラリをインポートします。

import pandas as pd

サンプルデータの準備

次に、購入日付きの車データを格納した辞書(リストの辞書)を作成します。

d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
     'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17',
                          '2021-03-16', '2021-02-19', '2021-08-22']
    }

この辞書をもとにDataFrameを作成します。

dataFrame = pd.DataFrame(d)

日付範囲でフィルタリングする

ここでは、「2021-05-10」から「2021-08-25」までの間に購入された車を抽出してみましょう。locに条件式を渡すことで、該当する行のみを取得できます。

resDF = dataFrame.loc[(dataFrame["Date_of_Purchase"] >= "2021-05-10") & (dataFrame["Date_of_Purchase"] <= "2021-08-25")]

コードのポイントは以下の3点です。

  • 各条件式は必ず括弧 () で囲む
  • 複数条件のAND結合には & 演算子を使う
  • 「YYYY-MM-DD」形式の日付文字列はそのまま比較できる

完全なコード例

import pandas as pd

# リストの辞書を作成
d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
     'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17',
                          '2021-03-16', '2021-02-19', '2021-08-22']
    }

# 辞書からDataFrameを作成
dataFrame = pd.DataFrame(d)
print("DataFrame...\n", dataFrame)

# 2つの日付の間に購入された車を抽出
# 開始日: 2021-05-10
# 終了日: 2021-08-25
resDF = dataFrame.loc[(dataFrame["Date_of_Purchase"] >= "2021-05-10") &
                      (dataFrame["Date_of_Purchase"] <= "2021-08-25")]

# フィルタリング結果を表示
print("\n指定した期間に購入された車:\n", resDF)

実行結果

DataFrame...
        Car   Date_of_Purchase
0       BMW          2021-07-10
1      Lexus          2021-08-12
2       Audi          2021-06-17
3   Mercedes          2021-03-16
4     Jaguar          2021-02-19
5    Bentley          2021-08-22

指定した期間に購入された車:
       Car   Date_of_Purchase
0      BMW         2021-07-10
1     Lexus         2021-08-12
2      Audi         2021-06-17
5   Bentley         2021-08-22

出力を見ると、元の6行のうち、購入日が「2021-05-10」〜「2021-08-25」の範囲内であるBMW、Lexus、Audi、Bentleyの4行だけが抽出されていることがわかります。

まとめ

dataframe.locと比較演算子・&演算子を組み合わせれば、2つの日付の間のデータを簡単に抽出できます。なお、より高度な日付操作(月ごとの集計や差分計算など)を行いたい場合は、pd.to_datetime()で列を日付型に変換してから処理するのがおすすめです。

  1. 【Python】Pandasで欠落している日付を確認・抽出する方法

    時系列データを扱う際、記録されていない日付(欠落している日付)を特定したいケースはよくあります。PythonのPandasライブラリでは、date_range()とdifference()を組み合わせることで、指定した期間の中から存在しない日付を簡単に抽出できます。 この記事では、車の購入日データを例に、欠落している日付を確認する具体的な手順を解説します。 手順1: 日付データを含む辞書を作成する まず、日付の記録を含む辞書(リスト形式)を用意します。ここでは「購入日(Date_of_purchase)」を例として使用します。 # リストの辞書 d = {Car: [BMW, Lexus, A

  2. Pythonで2つの日付の間の日数を計算する方法を解説

    Pythonでは、シンプルな日付演算を使うことで、2つの日付の間の日数を簡単に計算できます。日数の差を求めたい2つの日付を定義し、それらを引き算すると timedelta オブジェクトが得られます。このオブジェクトの days プロパティを参照することで、目的の日数を取得できます。基本的な手順datetime モジュールから date クラスをインポートします。差を求めたい2つの日付を date オブジェクトとして定義します。2つの日付を引き算して timedelta オブジェクトを生成します。days プロパティの値を出力します。サンプルコードfrom datetime import dat