根据非空列的数量从数据框中选择行

时间:2014-08-19 16:54:18

标签: python pandas dataframe

我有一个像这样的Pandas数据框:

    col1    col2    col3    col4
0   NaN     D       NaN     I
1   NaN     NaN     F       J
2   NaN     NaN     NaN     NaN
3   A       E       NaN     NaN
4   NaN     NaN     G       NaN
5   NaN     NaN     NaN     K
6   B       NaN     NaN     NaN
7   NaN     NaN     H       NaN
8   NaN     NaN     NaN     NaN
9   C       NaN     NaN     NaN

我希望将行保留在至少有两个非空条目的位置:

    col1    col2    col3    col4
0   NaN     D       NaN     I
1   NaN     NaN     F       J
3   A       E       NaN     NaN

使用布尔索引选择所有非空列非常容易,但是如何将其概括为保持带有> = x个非空条目数的行?

以下是创建此数据框的代码:

import numpy as np
import pandas as pd

d = {'col1' : [np.nan, np.nan, np.nan, 'A', np.nan, np.nan, 'B', np.nan, np.nan, 'C'],
 'col2' : ['D', np.nan, np.nan, 'E', np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
 'col3' : [np.nan, 'F', np.nan, np.nan, 'G', np.nan, np.nan, 'H', np.nan, np.nan],
 'col4' : ['I', 'J', np.nan, np.nan, np.nan, 'K', np.nan, np.nan, np.nan, np.nan]}

df = pd.DataFrame(d)

1 个答案:

答案 0 :(得分:4)

选项中的各种好东西

In [20]: df.dropna(thresh=2)
Out[20]: 
  col1 col2 col3 col4
0  NaN    D  NaN    I
1  NaN  NaN    F    J
3    A    E  NaN  NaN

这是一个等效的soln

df.loc[df.count(axis=1)>=2]