Pandas dataframe を日付で並べ替える方法 (例あり)


多くの場合、日付を含む列に基づいて pandas DataFrame を並べ替えたい場合があります。幸いなことに、これはsort_values()関数を使用して簡単に行うことができます。

このチュートリアルでは、この機能の実際の使用例をいくつか示します。

例 1: 日付列で並べ替える

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

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'sales': [4, 11, 13, 9],
                   'customers': [2, 6, 9, 7],
                   'date': ['2020-01-25', '2020-01-18', '2020-01-22', '2020-01-21']})

#view DataFrame
print (df)

   sales customers date
0 4 2 2020-01-25
1 11 6 2020-01-18
2 13 9 2020-01-22
3 9 7 2020-01-21

まず、 to_datetime()関数を使用して、「date」列を datetime オブジェクトに変換する必要があります。

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

次に、 sort_values()関数を使用して、「日付」列に基づいて DataFrame を並べ替えることができます。

 df. sort_values (by=' date ')

        sales customers date
1 11 6 2020-01-18
3 9 7 2020-01-21
2 13 9 2020-01-22
0 4 2 2020-01-25

デフォルトでは、この関数は日付を昇順に並べ替えます。ただし、 ascending=False を指定すると、降順で並べ替えることができます。

 df. sort_values (by=' date ', ascending= False )

	sales customers date
0 4 2 2020-01-25
2 13 9 2020-01-22
3 9 7 2020-01-21
1 11 6 2020-01-18

例 2: 複数の日付列による並べ替え

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

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'person': ['A', 'B', 'C', 'D'],
                   'order_date': ['2020-01-15', '2020-01-15', '2020-01-20', '2020-01-20'],
                   'receive_date': ['2020-01-25', '2020-01-18', '2020-01-22', '2020-01-21']})

#view DataFrame
print (df)

  person order_date receive_date
0 A 2020-01-15 2020-01-25
1 B 2020-01-15 2020-01-18
2 C 2020-01-20 2020-01-22
3 D 2020-01-20 2020-01-21

sort_values関数を使用すると、関数に複数の列名を指定するだけで、複数の列で DataFrame を並べ替えることができます。

 #convert both date columns to datetime objects
df[['order_date','receive_date']] = df[['order_date','receive_date']]. apply (pd. to_datetime )

#sort DateFrame by order_date, then by receive_date
df. sort_values (by=['order_date', 'receive_date'])

        person order_date receive_date
1 B 2020-01-15 2020-01-18
0 A 2020-01-15 2020-01-25
3 D 2020-01-20 2020-01-21
2 C 2020-01-20 2020-01-22

DataFrame は、order_date による昇順で並べ替えられ、次に、receipt_date による昇順で並べ替えられます。

追加リソース

Pandas DataFrame 行を日付でフィルターする方法
Pandas で DateTime を日付に変換する方法
Pandas で列を DateTime に変換する方法
Pandas でインデックスと列の両方で並べ替える方法

コメントを追加する

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