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

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

我想知道如何删除 (或更多)列中的值 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)

以上是 Python-如果两列均为NaN,则删除行 的全部内容, 来源链接: utcz.com/qa/412193.html

回到顶部