#python #pandas #numpy #dataframe
#python #pandas #numpy #фрейм данных
Вопрос:
Я пытаюсь выяснить, как фильтровать фрейм данных pandas так, чтобы значения в определенном столбце были либо больше определенного значения, либо равны NaN. Допустим, мой фрейм данных выглядит следующим образом:
df = pd.DataFrame({"col1":[1, 2, 3, 4], "col2": [4, 5, np.nan, 7]})
Я пробовал:
df = df[df["col2"] >= 5 | df["col2"] == np.nan]
и:
df = df[df["col2"] >= 5 | np.isnan(df["col2"])]
Но первое вызывает ошибку, а второе исключает строки, где значение равно NaN. Как я могу получить такой результат:
pd.DataFrame({"col1":[2, 3, 4], "col2":[5, np.nan, 7]})
Ответ №1:
Пожалуйста, попробуйте
df[df.col2.isna()|df.col2.gt(4)]
col1 col2
1 2 5.0
2 3 NaN
3 4 7.0
Комментарии:
1. К вашему сведению, для всех остальных, похоже
df['col2']
, работает так же, какdf.col2
Ответ №2:
Кроме того, вы можете заполнить nan пороговым значением:
df[df.fillna(5)>=5]