Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

つとむ先生のpandasドリル【合計の列の小さい順にソートするには?】

f:id:kenken0326:20210114163756p:plain

f:id:kenken0326:20191021153602p:plain
tsutomu こんにちはPyQチームのtsutomuです。
pandasドリル第12回の問題は「合計の列の小さい順にソートするには?」です。

つとむ先生の紹介

20数年、最適化関連の案件に従事するビープラウドの技術士(情報工学)。2014年より最適化のモデル作成にPythonを使い始め、効率的に開発できるようになる。東京海洋大学、青山学院大学、慶應義塾大学、上智大学に非常勤講師としての勤務経験がある。また、オペレーションズ・リサーチ学会に約30年所属し、理事を2期務めた。フェロー。
主な著書はモデリングの諸相Python言語によるビジネスアナリティクス今日から使える!組合せ最適化データ分析ライブラリーを用いた最適化モデルの作り方

問題

f:id:kenken0326:20191021153602p:plain
tsutomu DataFrame型の変数df1(問題の直下にあります)に、テストの結果の表が入っています。

df1を、下記のようにTotalの小さい順にソートしてください。

結果は、変数resultに入れてください。
1生徒に対応する行は、1まとまりにしてください。

変数df1の内容

Name Subject Point Total
0 Alice 国語 87 159
1 Alice 算数 72 159
2 Bob 国語 65 157
3 Bob 算数 92 157

変数resultに入るべきDataFrame

Name Subject Point Total
2 Bob 国語 65 157
3 Bob 算数 92 157
0 Alice 国語 87 159
1 Alice 算数 72 159

回答

result = df1.sort_values(['Total', 'Name'])
※result = df1.sort_values('Total', kind='mergesort')でも可

解説

df1.sort_values(['Total', 'Name'])とします。

ソートの第1キーはTotal、第2キーはNameです。第2キーをNameにすることで、Totalが同じ場合にNameもまとめることができます。

詳しくは下記のドキュメントをお読みください。 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sort_values.html

前回の問題

第11回つとむ先生のpandasドリル【df.groupbyを用いてDataFrameの値を合計した列を追加するには?】はこちらからご覧ください。

blog.pyq.jp

Copyright ©2017- BeProud Inc. All rights reserved.