微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 过滤掉超过一定数量NaN的行

在Pandas数据框中,我想过滤掉所有超过2个NaN的行.

基本上,我有4列,我想只保留至少2列有限值的那些行.

有人可以建议如何实现这一目标吗?

解决方法:

以下应该有效

df.dropna(thresh=2)

online docs

我们在这里做的是删除任何NaN行,其中一行中有2个或更多非NaN值.

例:

In [25]:

import pandas as pd

df = pd.DataFrame({'a':[1,2,NaN,4,5], 'b':[NaN,2,NaN,4,5], 'c':[1,2,NaN,NaN,NaN], 'd':[1,2,3,NaN,5]})

df

Out[25]:

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

[5 rows x 4 columns]

In [26]:

df.dropna(thresh=2)

Out[26]:

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

[4 rows x 4 columns]

编辑

对于上面的例子它可以工作,但你应该注意你必须知道列的数量并适当地设置阈值,我原本认为它意味着NaN值的数量,但它实际上意味着非NaN值的数量.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐