Pandas只删除NaN和float 0.0的行

sec*_*guy 3 python python-3.x pandas

我有一个数据框,每列代表一个用户.我试图消除任何除NaN和0.000000之外的任何列.因此,用户名1或第一列不会包含在数据框中,但其他用户将包括在内.

这是数据帧:

  username  1         2        3         4          5    
      date
2019-01-16  NaN       9.16667  NaN       NaN        1.000000
2019-01-17  NaN       NaN      NaN       1.000000   1.000000
2019-01-18  NaN       1.00000  0.956522  1.000000   1.000000
2019-01-19  0.000000  NaN      1.000000  NaN        NaN  
2019-01-20  0.000000  NaN      0.961538  NaN        NaN     
Run Code Online (Sandbox Code Playgroud)

百分比存储为float64:

type(df['1'].iloc[0])
numpy.float64
Run Code Online (Sandbox Code Playgroud)

yat*_*atu 5

您可以从替换0为开始NaN,然后删除仅包含NaNs以下内容的列:

df.loc[:,~df.replace(0,np.nan).isna().all()]

username            2         3    4    5
0        date      NaN       NaN  NaN  NaN
1  2019-01-16  9.16667       NaN  NaN  1.0
2  2019-01-17      NaN       NaN  1.0  1.0
3  2019-01-18  1.00000  0.956522  1.0  1.0
4  2019-01-19      NaN  1.000000  NaN  NaN
5  2019-01-20      NaN  0.961538  NaN  NaN
Run Code Online (Sandbox Code Playgroud)