パンダ: 2 つの日付間の行を選択する方法


次の構文を使用して、pandas DataFrame 内の 2 つの特定の日付の間の行を選択できます。

 df[df. date . between (' 2022-01-02 ', ' 2022-01-06 ')]

この特定の例では、01/02/2022 から 01/06/2022 までの DataFrame 内のすべての行を選択します。

次の例は、この構文を実際に使用する方法を示しています。

例: Pandas で 2 つの日付間の行を選択する

次のパンダ データフレームがあるとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' date ': pd. date_range (start=' 1/1/2022 ', periods= 8 ),
                   ' sales ': [18, 20, 15, 14, 10, 9, 8, 12],
                   ' returns ': [5, 7, 7, 9, 12, 3, 2, 4]})

#view DataFrame
print (df)

        date sales returns
0 2022-01-01 18 5
1 2022-01-02 20 7
2 2022-01-03 15 7
3 2022-01-04 14 9
4 2022-01-05 10 12
5 2022-01-06 9 3
6 2022-01-07 8 2
7 2022-01-08 12 4

次の構文を使用すると、日付 01/02/2022 から 01/06/2022 までの行のみを選択できます。

 #select all rows where date is between 2022-01-02 and 2022-01-06
df[df. date . between (' 2022-01-02 ', ' 2022-01-06 ')]

              date sales returns
1 2022-01-02 20 7
2 2022-01-03 15 7
3 2022-01-04 14 9
4 2022-01-05 10 12
5 2022-01-06 9 3

日付 2022-01-02 と 2022-01-06 の間の行のみが選択されることに注意してください。

必要に応じて、 between()関数の外側で開始日と終了日を設定することもできます。

 #define start and end dates
start_date = ' 2022-01-02 '
end_date = ' 2022-01-06 '

#select all rows where date is between start and end
df[df. date . between (start_date, end_date)]


              date sales returns
1 2022-01-02 20 7
2 2022-01-03 15 7
3 2022-01-04 14 9
4 2022-01-05 10 12
5 2022-01-06 9 3

これでも同じ結果が得られます。

日付列が認識可能な日時形式でない場合は、最初に次のコードを使用して日時形式に変換する必要がある場合があることに注意してください。

 df[' date '] = pd. to_datetime (df[' date ']) 

それが完了したら、 between()関数を使用して、特定の日付間の行を選択できます。

追加リソース

次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。

Pandas で日付範囲を作成する方法
Pandasで日付から月を抽出する方法
Pandasでタイムスタンプを日付/時刻に変換する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です