Python

pandas.DataFrameでbool型カラムのソート順序

pandasでbooleanをソートしたらTrueとFalseどっちが先に来るんだっけ?


表形式のデータを扱うのに便利なpandas.DataFrame

カラムには色々な型のデータを扱うことができ、TrueFalseのbool型も扱うことができる。

データフレームは df.sort_values() でソートできるが、TrueFalseのどちらが先になるのか

そこで今回はpandas.DataFrameでbool型カラムのソート順序について紹介する。

この記事を書いている人


システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。

記事を読むメリット

pandas.DataFrameでbool型カラムのソート順序がわかり、pandasでデータをソートするのが得意になる


データ準備

ソートの順がどうなるかは、試すのが手っ取り早い

試すためのデータをまず用意する。

以下の内容のCSVを bool_sample.csv として保存する。

CSV

id,age,score,promotion_allowed
"a",12,100,True
"b",13,105,True
"c",12,90,False
"d",13,85,False

そしてpandas.DataFrameとして読み込む。

DATA

import pandas as pd

df1 = pd.read_csv("bool_sample.csv")
print(df1)

#   id  age  score  promotion_allowed
# 0  a   12    100               True
# 1  b   13    105               True
# 2  c   12     90              False
# 3  d   13     85              False

print(df1["promotion_allowed"])

# 0     True
# 1     True
# 2    False
# 3    False
# Name: promotion_allowed, dtype: bool


見ての通り、 promotion_allowed の列が TrueFalseを持つbool型の列(カラム)になっている。

このデータを使って試してみる。



pandas.DataFrameでbool型カラムのソート順序

結論を言えば、pandas.DataFrameでbool型カラムのソート順序は False が先になる

試すには df.sort_values() を用いる。

SAMPLE

print(df1.sort_values("promotion_allowed"))

#   id  age  score  promotion_allowed
# 2  c   12     90              False
# 3  d   13     85              False
# 0  a   12    100               True
# 1  b   13    105               True

print(df1.sort_values("promotion_allowed", ascending=False))

#   id  age  score  promotion_allowed
# 0  a   12    100               True
# 1  b   13    105               True
# 2  c   12     90              False
# 3  d   13     85              False


df.sort_values()を使うと↑のように False が先になる。

逆に ascending=False を指定して降順にすると True が先になる。



デフォルトはascending=Trueです。False内部では0であるため最初に配置されます。
参考:python-PandasDataFrameのブール値の並べ替え列-スタックオーバーフロー


実際に試してみれば一目瞭然ですね


他にもpandas関連の記事もあるので、もし気になるものがあれば見てみて欲しい

ITipsと同じようなブログを作る方法

ブログに興味がありますか?

もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

ランキング参加中

にほんブログ村 IT技術ブログへ

他にもブログやSNSで紹介してくれると励みになります。

はてブのコメントで酷評されると泣きます(´;ω;`)

-Python
-

© 2022 ITips