Ответ 1
Это не работает, потому что NaN
не равно никому, включая NaN
. Вместо этого используйте pd.isnull(df.var2)
.
У меня есть pandas dataframe (df), и я хочу сделать что-то вроде:
newdf = df[(df.var1 == 'a') & (df.var2 == NaN)]
Я попытался заменить NaN на np.NaN
или 'NaN'
или 'NaN'
и т.д., но ничто не оценивает значение True. Там нет pd.NaN
.
Я могу использовать df.fillna(np.nan)
, прежде чем оценивать вышеприведенное выражение, но это кажется хакерским, и мне интересно, вмешивается ли он в другие операции pandas, которые полагаются на возможность идентифицировать pandas -формат NaN позже.
У меня возникает ощущение, что должен быть легкий ответ на этот вопрос, но почему-то это ускользнуло от меня. Любые советы приветствуются. Спасибо.
Это не работает, потому что NaN
не равно никому, включая NaN
. Вместо этого используйте pd.isnull(df.var2)
.
Pandas использует значение numpy
NaN. Используйте numpy.isnan
для получения булева вектора из серии pandas.
Самый простой из всех решений:
filtered_df = df[df['var2'].isnull()]
Этот фильтр и дает вам строки, которые имеют только значения NaN в столбце "var2".