Python - удалить строку, если два столбца NaN
Это расширениеэтот вопросгде 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
где только первый ряд опущен.
Есть идеи?
РЕДАКТИРОВАТЬ: изменены значения фрейма данных для согласованности