pandas:基于NaN的切片数据框

chi*_*n s 2 python python-2.7 pandas

我有以下数据框 df

prod_id prod_ref
10      ef3920
12      bovjhd
NaN     lkbljb
NaN     jknnkn
30      kbknkn
Run Code Online (Sandbox Code Playgroud)

我正在尝试以下方法:

df[df['prod_id'] != np.nan]
Run Code Online (Sandbox Code Playgroud)

但我得到完全相同的数据框。

我想展示

prod_id prod_ref
10      ef3920
12      bovjhd
30      kbknkn
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

jez*_*ael 6

使用函数notnull或求逆isnull

print (df[df.prod_id.notnull()])
   prod_id prod_ref
0     10.0   ef3920
1     12.0   bovjhd
4     30.0   kbknkn

print (df[~df.prod_id.isnull()])

   prod_id prod_ref
0     10.0   ef3920
1     12.0   bovjhd
4     30.0   kbknkn
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是dropna,但需要指定检查列NaN

print (df.dropna(subset=['prod_id']))
   prod_id prod_ref
0     10.0   ef3920
1     12.0   bovjhd
4     30.0   kbknkn
Run Code Online (Sandbox Code Playgroud)

如果在其他列中没有NaN值,请使用Alberto Garcia-Raboso的解决方案