Python DataFrame:如何删除填充了多列的行?

时间:2019-06-21 15:34:48

标签: python pandas dataframe data-cleaning

我有一个数据框,其中的列应该是虚拟列(对于每一行,只应填充一个列)。但是,数据中有一些“杂音”:某些行填充了不止一列。我要删除这些行。

假设DataFrame看起来像下面的示例:

  a       b        c        d  
0 NaN     1        NaN      NaN
1 1       2        3        4  
2 1       1        NaN      NaN 
3 NaN     NaN      1        NaN
4 1       NaN      1        NaN

所以我的预期结果是删除了行[1,2,4]。您可能会说,我只接受NaN值等于number_of_columns-1的行。

大熊猫有什么办法吗?

2 个答案:

答案 0 :(得分:3)

使用:

df[(df.shape[1]-1)==(df.isna().sum(axis=1))]

    a    b    c   d
0 NaN  1.0  NaN NaN
3 NaN  NaN  1.0 NaN

答案 1 :(得分:1)

这将带您到达那里。您只需要连续计算空值的数量,然后根据该值对框架进行切片即可。

df[df.notna().sum(axis=1) <= 1]
    a    b    c   d
0 NaN  1.0  NaN NaN
3 NaN  NaN  1.0 NaN