本記事ではリストに入ったDataFrameの順序を並び替える方法について紹介しています.
事前準備
まずはサンプルのDataFrameを3つ作成し,順不同でリストに格納します.
import pandas as pd
c = ['get_date', 'col_1']
df1 = pd.DataFrame([['2023-02-01', 'アジ'], ['2023-02-01', 'サバ']], columns=c)
df2 = pd.DataFrame([['2023-02-02', 'ホタテ'], ['2023-02-02', 'アサリ']], columns=c)
df3 = pd.DataFrame([['2023-02-03', 'エビ'], ['2023-02-03', 'カニ']], columns=c)
# 各DataFrameを順不同でリストに格納
df_l = [df3, df1, df2]
リストに入ったDataFrameを並び替える
リストに格納したDataFrameを順番に表示してみると以下のようになります.
for df in df_l:
display(df)
get_date | col_1 | |
---|---|---|
0 | 2023-02-03 | エビ |
1 | 2023-02-03 | カニ |
get_date | col_1 | |
---|---|---|
0 | 2023-02-01 | アジ |
1 | 2023-02-01 | サバ |
get_date | col_1 | |
---|---|---|
0 | 2023-02-02 | ホタテ |
1 | 2023-02-02 | アサリ |
次にリスト内のDataFrameを並び替えて順に表示してみましょう.
df_ls = sorted(df_l, key=lambda x: x['get_date'][0])
for df in df_ls:
display(df)
get_date | col_1 | |
---|---|---|
0 | 2023-02-01 | アジ |
1 | 2023-02-01 | サバ |
get_date | col_1 | |
---|---|---|
0 | 2023-02-02 | ホタテ |
1 | 2023-02-02 | アサリ |
get_date | col_1 | |
---|---|---|
0 | 2023-02-03 | エビ |
1 | 2023-02-03 | カニ |
解説
上記のコードでは,Pythonの組み込み関数sorted
を使用して並び替えをした上で,DataFrameを順番に表示しています.
sorted
の引数key
にlambda関数を使うことで,リストの各DataFrameにおけるget_dateの最初の値を基準に並び替えを行うように指定しています.
注意
(当然ですが)この方法は各DataFrameのget_date列が同じ値でないと使えません.
日付や何らかの種類でまとまったデータの列を基準にすることが必要です.
ひとこと
日付ごとにまとまったデータを扱う際に使用しました.
あまり使い所はないですが,何かの役に立てば幸いです.