Python pandas:基于NaN的切片数据帧
我有以下数据帧Python pandas:基于NaN的切片数据帧,python,python-2.7,pandas,Python,Python 2.7,Pandas,我有以下数据帧df prod_id prod_ref 10 ef3920 12 bovjhd NaN lkbljb NaN jknnkn 30 kbknkn 我正在尝试以下方法: df[df['prod_id'] != np.nan] 但我得到了完全相同的数据帧 我想展示 prod_id prod_ref 10 ef3920 12 bovjhd 30 kbknkn 我做错了什么?使用函数或反转: 另一种解决方案是,
df
prod_id prod_ref
10 ef3920
12 bovjhd
NaN lkbljb
NaN jknnkn
30 kbknkn
我正在尝试以下方法:
df[df['prod_id'] != np.nan]
但我得到了完全相同的数据帧
我想展示
prod_id prod_ref
10 ef3920
12 bovjhd
30 kbknkn
我做错了什么?使用函数或反转:
另一种解决方案是,但需要指定检查列NaN
:
print (df.dropna(subset=['prod_id']))
prod_id prod_ref
0 10.0 ef3920
1 12.0 bovjhd
4 30.0 kbknkn
如果其他列中的值不是
NaN
值,请使用。问题在于np.NaN!=np.nan
为True
(或者,np.nan==np.nan
为False
)。Pandas提供了.dropna()
方法来执行您想要的操作:
df.dropna()
输出:
prod\u id prod\u ref
0 10.0 ef3920
1 12.0 bovjhd
430.0kbKNKNK
默认情况下,.dropna()
将删除任何列中包含NaN
的行。可以通过两种方式调整此行为:
- 使用
参数只检查一些列,然后subset
- 使用
,要求行在所有列中(如果您正在使用how='all'
子集中)包含
——默认值为NaN
how='any'
你可以查看。@gabra-谢谢你的编辑,不幸的是我也编辑了答案,所以社区拒绝了它谢谢你,特别是解释
np.nan!=np.nan
和np.nan==np.nan
。
df.dropna()