Python – Drop row si dos columnas son NaN

Esta es una extensión de esta pregunta , donde OP quiso saber cómo colocar filas donde los valores en una sola columna son NaN.

Me pregunto cómo puedo eliminar filas donde los valores en 2 (o más) columnas son NaN. Usando el dataframe creado por la segunda respuesta:

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 

Si utilizo el drop.na() , específicamente el drop.na(subset=[1,2]) , completa un “o” tipo drop y se va:

 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 

Lo que quiero es una caída de tipo “y”, donde cae las filas donde hay un NaN en el índice de columna 1 y 2. Esto dejaría:

  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 

donde solo se deja caer la primera fila.

¿Algunas ideas?

EDITAR: cambiar los valores de dataframe para la consistencia

Cualquiera de los dos siguientes:

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

o

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

Especifique el método dropna() :

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