当前位置: 首页 > 面试题库 >

Python-如果两列均为NaN,则删除行

白昊乾
2023-03-14
问题内容

这是对该问题的扩展,OP希望知道如何删除单列值为NaN的行。

我想知道如何删除 2 (或更多)列中的值 均为 NaN的行。使用第二个答案的创建的数据框:

In [1]: df = pd.DataFrame(np.random.randn(10,3))

In [2]: df.ix[::2,0] = np.nan; df.ix[::4,1] = np.nan; df.ix[::3,2] = np.nan;

In [3]: df
Out[3]:
          0         1         2
0       NaN       NaN       NaN
1  2.677677 -1.466923 -0.750366
2       NaN  0.798002 -0.906038
3  0.672201  0.964789       NaN
4       NaN       NaN  0.050742
5 -1.250970  0.030561 -2.678622
6       NaN  1.036043       NaN
7  0.049896 -0.308003  0.823295
8       NaN       NaN  0.637482
9 -0.310130  0.078891       NaN

如果我使用drop.na()命令,特别是使用drop.na(subset=[1,2]),那么它将完成一个“或”类型的放置并离开:

In[4]: df.dropna(subset=[1,2])
Out[4]: 
          0         1         2
1  2.677677 -1.466923 -0.750366
2       NaN  0.798002 -0.906038
5 -1.250970  0.030561 -2.678622
7  0.049896 -0.308003  0.823295

我想要的是一个“和”类型放置,它将放置行NaN中的列索引为1 2的行删除。这将留下:

          0         1         2
1  2.677677 -1.466923 -0.750366
2       NaN  0.798002 -0.906038
3  0.672201  0.964789       NaN
4       NaN       NaN  0.050742
5 -1.250970  0.030561 -2.678622
6       NaN  1.036043       NaN
7  0.049896 -0.308003  0.823295
8       NaN       NaN  0.637482
9 -0.310130  0.078891       NaN

仅删除第一行的位置。

有任何想法吗?

编辑:更改数据框值以保持一致性


问题答案:

以下两个中的任何一个:

df.dropna(subset=[1, 2], how='all')

要么

df.dropna(subset=[1, 2], thresh=1)


 类似资料:
  • 我想删除列为空/nan的所有行。做这件事的有效方法是什么?

  • 问题内容: 我有一个csv文件。我读了: 它的输出如下: 我想删除列为空/ NaN的所有行。什么是有效的方法? 问题答案: 使用带有参数的指定检查列S: 用另一种解决方案和: 另一种选择: 时机

  • 我有这个,并且只需要列不是的记录: ...即。类似于的内容,以获取结果数据规则: 我该怎么做?

  • 问题内容: 我有以下数据框 我尝试了以下 但是,每当我尝试拟合回归模型时 ,我仍然会收到此错误 我们如何同时删除和值? 问题答案: 使用并检查带有的行。最后,使用布尔数组对数据帧进行切片。

  • 本文向大家介绍python如何删除列为空的行,包括了python如何删除列为空的行的使用技巧和注意事项,需要的朋友参考一下 1.摘要 dropna()方法,能够找到DataFrame类型数据的空值(缺失值),将空值所在的行/列删除后,将新的DataFrame作为返回值返回。 2.函数详解 函数形式:dropna(axis=0, how='any', thresh=None, subset=None

  • 问题内容: 我有一个脚本,它使用DROP TABLE IF EXISTS删除表的负载,这可以工作。 此脚本中还有一个删除操作,用于从我不管理的另一个表中删除一行。该表可能存在或不存在。是否有任何在尝试删除行之前检查该表是否存在? 这需要适用于MYSQL和SQLServer 谢谢亚历克斯 问题答案: 要签入SQL SERVER, 要检查mysql: 您只需数: