①は(df[列] == 0).all()、②は(df[列] == 0).any()が使えます。
Python
1import pandas as pd
2
3df = pd.DataFrame({'A':[1,2,3],'B':[0,0,0],'D':[7,8,0]})
4
5df1 = df.copy()
6for c in df1.columns:
7 if (df1[c] == 0).all():
8 df1.drop(c, axis=1, inplace=True)
9print(df1)
10
11df2 = df.copy()
12for c in df2.columns:
13 if (df2[c] == 0).any():
14 df2.drop(c, axis=1, inplace=True)
15print(df2)