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()で列を日付型に変換してから処理するのがおすすめです。
-
【Python】Pandasで欠落している日付を確認・抽出する方法
時系列データを扱う際、記録されていない日付(欠落している日付)を特定したいケースはよくあります。PythonのPandasライブラリでは、date_range()とdifference()を組み合わせることで、指定した期間の中から存在しない日付を簡単に抽出できます。 この記事では、車の購入日データを例に、欠落している日付を確認する具体的な手順を解説します。 手順1: 日付データを含む辞書を作成する まず、日付の記録を含む辞書(リスト形式)を用意します。ここでは「購入日(Date_of_purchase)」を例として使用します。 # リストの辞書 d = {Car: [BMW, Lexus, A
-
Pythonで2つの日付の間の日数を計算する方法を解説
Pythonでは、シンプルな日付演算を使うことで、2つの日付の間の日数を簡単に計算できます。日数の差を求めたい2つの日付を定義し、それらを引き算すると timedelta オブジェクトが得られます。このオブジェクトの days プロパティを参照することで、目的の日数を取得できます。基本的な手順datetime モジュールから date クラスをインポートします。差を求めたい2つの日付を date オブジェクトとして定義します。2つの日付を引き算して timedelta オブジェクトを生成します。days プロパティの値を出力します。サンプルコードfrom datetime import dat