Это расширение для этого вопроса, где OP хотел знать, как удалить строки, где значения в одном столбце - NaN.
Мне интересно, как я могу отбросить строки, где значения в столбцах 2 (или более) и NaN. Используя второй ответ, созданный Data Frame:
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])
, то она завершает "или" тип drop и оставляет:
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
То, что я хочу, это "и" тип drop, где он отбрасывает строки, где есть NaN
в столбце index 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
где удаляется только первая строка.
Любые идеи?
EDIT: измененные значения фрейма данных для согласованности