熊猫仅在NaN浮动0.0的位置删除行

时间:2019-02-04 15:28:26

标签: 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     

百分比存储为float64:

type(df['1'].iloc[0])
numpy.float64

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

您可以先通过dropna然后将{{3}}的0值转换为NaN

df = df.mask(df.eq(0)).dropna(how='all', axis=1)

即使对于未删除的列,这也会将0的值转换为NaN。尚不清楚这是否是您想要的,但建议保持一致。