如何在 panda Dataframe 中完全用零删除所有行和列

How to remove all rows and columns entirely with zeros in panda Dataframe

我希望完全删除所有填充为零的行和列。

但它只返回这个。

      Box_deatils    1    5
0           1  0.0  0.0
1           2  1.0  0.0
2           3  1.0  0.0
3           4  0.0  0.0
4           5  0.0  0.0
5           6  0.0  1.0
  Box_deatils    1    5
0           1  0.0  0.0
1           2  1.0  0.0
2           3  1.0  0.0
3           4  0.0  0.0
4           5  0.0  0.0
5           6  0.0  1.0
 

没有删除行,只有列正在删除

请帮忙找出下面的错误。

Soln=[[0. 0. 0. 0. 0. 0.]
     [1. 0. 0. 0. 0. 0.]
     [1. 0. 0. 0. 0. 0.]
     [0. 0. 0. 0. 0. 0.]
     [0. 0. 0. 0. 0. 0.]
     [0. 0. 0. 0. 1. 0.]]
    
    result=pd.DataFrame(Soln)

Final_result=result.loc[:,(result !=0).any(axis=0)]

print(Final_result)

Final_result=Final_result.loc[(Final_result !=0).any(axis=1)]

print(Final_result)

小心 .loc.iloc ,它们不是一回事,更多信息在这里:loc and iloc in Pandas

我会使用“loc/iloc”方法或 .where 方法,我个人认为后者更容易:

df= df.where((df['column1'] != 0) & (df['column2'] != 0))

这在很多情况下对我有用。

据我了解,行 填充为零 实际上是一行 所有“numeric-named”列(在您的情况下 15)只有零 (Box_deatils(或Box_details)列中的值无关紧要)。

要做到这一点,您可以 运行:

df.drop(df.index[df.iloc[:, 1:].eq(0).all(axis=1)], inplace=True)

df现在包含:

   Box_deatils    1    5
1            2  1.0  0.0
2            3  1.0  0.0
5            6  0.0  1.0