前提・実現したいこと
Pandasで機械学習の前処理を行っています。
特徴量を削減するために、uniqueな要素数が1つしかない列を削除したいのですがどのように行えば良いのかが分かりません。
具体例
変数dfが以下のようなDataFrameを持っているとき、全ての要素が同じ列(今回であれば「県」と「年齢」)をまとめて削除したいです。
・削除前
県 | 名前 | 年齢 | |
---|---|---|---|
0 | 東京 | 田中 | 23 |
1 | 東京 | 鈴木 | 23 |
2 | 東京 | 高橋 | 23 |
3 | 東京 | 加藤 | 23 |
・削除後
名前 | |
---|---|
0 | 田中 |
1 | 鈴木 |
2 | 高橋 |
3 | 加藤 |
試したこと
df.nunique()
とすれば列名とその要素数が取得できると思いますが、そこから要素数が1の列名だけを抽出する方法が分かりません。具体例では小さなDataFrameを例にしましたが、実際にはもっと大きなDataFrameを扱っているので手作業で要素数が1の列の列名を入力するのでなく、一括してそのような列名が抽出できる方法を知りたいです。
df.drop(labels=['県', '年齢'], axis=1)
とすれば今回の場合は要素数が1の列を削除できますが、['県', '年齢']の部分をプログラム上で一括して取得するためにはどうすればいいかをお伺いしたいです。
補足情報(バージョン)
Python 3.7.4
Pandas 1.1.3
回答2件
あなたの回答
tips
プレビュー