我有一个数据框,其中的列应该是虚拟列(对于每一行,只应填充一个列)。但是,数据中有一些“杂音”:某些行填充了不止一列。我要删除这些行。
假设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的行。
大熊猫有什么办法吗?
答案 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