何度も忘れ、無駄に検索を繰返してしまう処理を備忘録として記載する。
(ここで df
は pandas.DataFrame
)
1、「ある値未満の値が存在する列のみを抽出したい」場合
- 例えばある値を100として、100未満の値を含む列だけを抽出したい場合、
condition = df < 100
とおいて、
condition = df < 100
df.loc[:, condition.any(axis=0)]
(any()
が簡便とご指摘いただき を削除しました。)(~df[condition].isnull()).sum() != 0
(※ 返り値がデータフレームとなる条件式が .any()
でなぜ処理できるのか疑問でしたが、.any()
は axis
引数を省略可能でデフォルトが .any(axis=0)
であるとのこと。https://estuarine.jp/2017/09/extract_rows_with_nan/ )
- 列中のすべての行が(表計算ソフトで言うところのすべてのセルが)、100未満の列のみを抽出したい場合は以下のように書く。
df.loc[:, df[condition].isnull().sum() == 0]
df.loc[:, condition.all(axis=0)]
2、「ある値より大きい値が存在する列のみを抽出したい」場合
不等号の向きを変えて、condition = df > 100
とします。