LoginSignup
2
1

[Pandas]全て0の行・列を削除する

Last updated at Posted at 2024-03-05

Pandasで値が全て0の行・列を削除する方法です。

推奨

# 全て0の行を削除する
df = df.loc[(df != 0).any(axis=1)]

# 全て0の列を削除する
df = df.loc[:, (df != 0).any(axis=0)]

(別方法)

# 全て0の行を削除する
df = df.mask(df==0).dropna(how='all', axis=0).fillna(0)

# 全て0の列を削除する
df = df.mask(df==0).dropna(how='all', axis=1).fillna(0)

補足

  • 欠損値を含まないpandas.DataFrameであること。
  • 上記コードの0を任意の値に置き換えてもOK。
  • .mask()は、条件に一致する値に対してTrueを返し、これに対して置換したい値を第2引数に指定する。指定しない場合、NaNが置換されるので、上記ではこれを利用している。
  • 欠損値を含む場合は、一度別の値に置換してから、処理後に戻せばよい。ただし、DataFrameの中に存在しない値を用いること。
df = df.fillna(99999)
df = df.mask(df==0).dropna(how='all', axis=1).fillna(0)
df = replace(99999, np.NaN)
2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1