2018-12-10こしあんTweetPocket「PandasでGroupbyでグルーピングしたはいんだけど、そこからグループ別にサンプルを1個、2個...と抜き出す、SQLでよくやるやつってどうやるんだっけ?」ということが気になったので、調べました。四国地方の県と面積をDataFrameにしてみました。ここから、中国地方と四国地方の面積が小さい県を選んでみます。7105グルーピングして抜き出すときはhead()全体の流れとして、面積(area)でソートして、区分(category)でgroupbyすればいいというのはわかります。グルーピングした後抜き出すのはどうやるんしょう?答えはpandas.core.groupby.GroupBy.headです。headなので、頭からサンプルをN個取ります。後ろから取りたいときはtail()を使います。3507この通り、四国で最も狭い香川県と、中国で最も狭い鳥取県を抜き出すことができました。後ろから抜き出したいときはtail()さっきは面積が小さい県を抜き出しましたが、逆に最も面積が大きい県を抜き出してみましょう。sort_valuesを降順ソートにしてhead()でもいいですが、ここではtail()を使ってみます。8480この通り、高知と広島が出てきました。ソートをしてグルーピングすると順番がバラバラになるので、グループ間で直したい場合は再ソートが必要ここがちょっと曲者ですが、head()に2以上を入れるとグループ別にバラバラの値が出てくるということがおきます。6114なので、グループごとに一緒にして表示したいという場合はグループで再ソートする必要がありそうです(ここもっと上手いやり方あったら教えてください)。6114このように、四国で面積の小さい2県:香川・徳島と、中国で面積の小さい2県:鳥取・山口を抽出することができました。愛媛県は山口県より面積が小さいですが(5679)、四国では3番目に小さいのでここには含まれていません。実は公式ドキュメントに載ってたこの方法探してて、あんまいい方法ないなと思っていたら公式ドキュメントに載っていました。下の方に載っている方法なので、気をつけてみないと見落とします。詳しく知りたかったら見てみてください。Commentコメントをキャンセルメールアドレスが公開されることはありません。