[edit 2023/12/06]
MSのBing Chat改めCopilotに聞いたら、最初エラーになるコードだったのですが、エラーメッセージを教えたらちゃんと直してくれて、こんなコード書いてくれました。
import polars as pl # データフレームを作成 df = pl.DataFrame({ "col1": [1, 2, None], "col2": [None, None, None], "col3": [None, 4, 5] }) # 全ての値がnullの列を削除 df = df.drop([col for col in df.columns if df[col].is_null().all()]) print(df)
[edit 2023/07/11]
この記事、元は違うやり方で書いたのですが、本家のDataFrame.drop_nulls()リファレンス
polars.DataFrame.drop_nulls — Polars documentation
に、全てnullの列を削除するコード例があって、それを真似たやり方だとこんな感じです。こっちの方が意図がわかりやすい。
# 全てnullの列を削除 def drop_null_columns(df): return df.select( [col.name for col in df if not (col.null_count() == df.height)] ) df = ... df.pipe(drop_null_columns)
[当初書いたやつ]
Pandasだとこんな感じのことをしたい。
df.dropna(how='all', axis='columns')
Polarsではズバリのメソッドは無いみたい。なのでこんな感じかな。
# 全てnullの列を削除 # 参考サイト # https://stackoverflow.com/questions/75446886/selecting-columns-based-on-a-condition-in-polars # https://stackoverflow.com/questions/74295124/polars-selecting-all-columns-without-nans def drop_null_columns(df): return df.select( [col.name for col in df.select(~pl.all().is_null().all()) if col.all()] ) df = ... df.pipe(drop_null_columns)