您在这里说了2个稍有不同的问题。在一般情况下,他们有不同的答案。
我只想保留至少两列具有有限值的那些行。
df = df.dropna(thresh=2)
这样可以使行具有2个或多个非null值。
我想过滤出所有超过2个的行
NaNs
df = df.dropna(thresh=df.shape[1]-2)
这将筛选出具有2个或多个null值的行。
在示例的4列数据框中,这些操作是等效的,因为df.shape[1] - 2 == 2。但是,您会发现数据框没有正好有4列的差异。
注意,如果您希望在应用阈值时仅包括指定的列,则dropna还有一个subset参数。例如:
df = df.dropna(subset=['col1', 'col2', 'col3'], thresh=2)
以下应该工作
df.dropna(thresh=2)
查看在线文档
我们在这里所做的是删除任何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]
编辑
对于上面的示例,它可以工作,但是您应该注意,您必须知道列数并thresh适当地设置值,我原本以为这意味着NaN值的数量,但实际上意味着非 NaN值的数量。
| 归档时间: | 
 | 
| 查看次数: | 3782 次 | 
| 最近记录: |