Как фильтровать фрейм данных с помощью isna?

#python #pandas #dataframe

Вопрос:

Это кажется супер простым, и все же мне не удается отфильтровать этот фрейм данных. Как вы можете видеть на скриншоте, я загружаю очень простой набор данных. Я проверяю, есть ли какие-либо значения в столбце «Col3» na. И, наконец, я пытаюсь отфильтровать фрейм данных, используя это. Я надеюсь, что мне вернут только второй столбец (с индексом 1). Но, как вы можете видеть, я получаю все 5 строк, но значения для Col3 теперь все NaN.

Я использую Python 3.7.3 и Pandas 1.1.4

введите описание изображения здесь

Попытка предложения wwnde использовать скобки вместо .loc, похоже, не сработала: введите описание изображения здесь

Ответ №1:

Попробуй

данные( теперь, когда вы не дали мне образцы данных)

 df = pd.DataFrame({'group1': [0, 0, 1, 1], 'group2': [2, 2, 3, 4],
                   'base': [0, 1, 2, 3], 'x1': [3, 4, 5, 6], 'x2': [np.nan, 6, np.nan, 8]})



df[df['x2'].isna()]

      group1  group2  base  x1  x2
0       0       2     0     3  NaN
2       1       3     2     5  NaN
 

Используйте метод доступа loc, если вам нужно вызвать определенные столбцы

 df.loc[df['x2'].isna(),:'base']#base and preceding columns



    group1  group2  base
0       0       2     0
2       1       3     2
 

или

 df.loc[df['x2'].isna(),['base','x1']]

    base  x1
0     0   3
2     2   5
 

Комментарии:

1. Это, к сожалению, привело к тому же результату — см. Мою правку

2. На какой версии вы находитесь?

3. Python 3.7.3 и Панды 1.1.4

4. Смотрите мои правки. С удовольствием воспользуюсь вашими данными, если вы предоставите образец.