itsuna's blog

日々のアウトプットと備忘録

pythonでpandasデータフレームを好きな順にソート

概要

pandasのデータフレームを自分の好きな順に並べ替えたいなと思ったので作った. たぶん普通の人はこんなことしないと思う.

コード

# 関数の作成
def predetermined_sort(dataframe, column_name, designated_order):
    # pandasのインポート
    import pandas as pd
    # 列名だけが入っているからのDataFrameを作成.
    sorted_dataframe = pd.DataFrame(index=[], columns=dataframe.columns)
    # disignated_orderに入っている単語順にdataframeから行を取り出し, sorted_dataframeに追加
    for word in designated_order:
        temp = dataframe[dataframe[column_name].isin([word])]
        sorted_dataframe = pd.concat([sorted_dataframe, temp])
    # 並べなおしたdataframeを返す. 
    return sorted_dataframe

# 実際の使用法
import pandas as pd
# dataframeの作成
df = pd.DataFrame({
    'name': ['Banana', 'Apple', 'Orange', 'Apple', 'Orange', 'Banana'],
    'price': [100, 90, 60, 150, 80, 120],
    'size': ['M', 'S', 'S', 'LL', 'SS', 'L']
})
print(df)
# nameをBanana, Orange, Appleの順に並べる.
df = predetermined_sort(df, 'name', ['Banana', 'Orange', 'Apple'])
print(df)

感想

たぶん他の方法があると思うけど, 参考になれば...