DataFrame の全てが 0 である列を削除するシンプルな方法
内容
pandas の DataFrame について、列のすべての値が 0 である列を削除する方法です。
コード
1 列だけ 0 のみでなる 3 * 4 のデータフレームの準備
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(12).reshape([3, 4]))
df[1] = 0
print(df)
"""
0 1 2 3
0 0 0 2 3
1 4 0 6 7
2 8 0 10 11
"""
0 のみの値からなる列を削除する方法 part1
df_no0 = df.loc[:, (df != 0).any(axis=0)]
print(df_no0)
"""
0 2 3
0 0 2 3
1 4 6 7
2 8 10 11
"""
0 のみの値からなる列を削除する part2
df_no0 = df.loc[:, ~(df == 0).all(axis=0)]
print(df_no0)
"""
0 2 3
0 0 2 3
1 4 6 7
2 8 10 11
"""
コード説明
part1 は 0 ではないデータを True とし、 1 つでも False の存在する列を削除することで、列の値が 0 のみである列を削除します。 part2 は 0 であるデータを True とし、すべてが True である列を排除する (~ が not の意味) ことで、 列の値が 0 のみである列を削除します。
終わりに
列の値がすべて 0 である列を削除する方法を 2 パターン示しました。 特殊なことはしておらず、難しい操作でもありませんが、即座には思いつかなかったのでまとめました。
2022 05 29