pandas - 通过NaN对数据框进行切片

2024-10-04 01:32:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧df

prod_id prod_ref
10      ef3920
12      bovjhd
NaN     lkbljb
NaN     jknnkn
30      kbknkn

我正在尝试以下方法:

^{pr2}$

但我得到了完全相同的数据帧。在

我想展示一下

prod_id prod_ref
10      ef3920
12      bovjhd
30      kbknkn

我做错什么了?在


Tags: 数据方法refiddfprodnanpr2
2条回答

使用函数^{}或反转^{}

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

另一个解决方案是^{},但需要指定要检查的列NaN

^{pr2}$

如果其他列中没有NaN值,请使用Alberto Garcia-Raboso's solution。在

问题是np.nan != np.nanTrue(或者,np.nan == np.nan是{})。Pandas提供.dropna()方法来执行您想要的操作:

df.dropna()

输出:

^{pr2}$

默认情况下,.dropna()将删除任何列中有NaN的行。可以通过两种方式调整此行为:

  • 只检查使用subset参数的某些列,并且
  • 要求该行使用how='all'所有列中包含NaN(如果使用的话,在subset中),默认值是how='any'。在

您可以检查documentation。在

相关问题 更多 >