Заполнение na в столбце в pandas из нескольких столбцов conition

#python #pandas

#python #pandas

Вопрос:

Я бы хотел заполнить na в фрейме данных pandas, где два столбца в фрейме данных находятся в одной строке.

 A B C
2 3 5
Nan nan 7
4 7 9
Nan 4 9
12 5 8
Nan Nan 6
  

В приведенном выше фрейме данных я бы хотел заменить только строку, в которой оба столбца A и B имеют Nan, на «Недоступно»

Таким образом:

 A B C
2 3 5
Not available not available 7
4 7 9
Nan 4 9
12 5 8
Not available not available 6
  

Я пробовал несколько подходов, но получаю нежелательный результат

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

1. Спасибо. Этот подход к маскировке работает просто отлично.

Ответ №1:

Если требуется только тест A , а B столбцы используются DataFrame.loc с маской, проверьте пропущенное значение с DataFrame.all помощью for test, если оба совпадают:

 m = df[['A','B']].isna().all(axis=1)

df.loc[m, ['A','B']] = 'Not Available'
  

Если нужно протестировать любые 2 столбца, сначала подсчитайте количество пропущенных значений и 2 используйте fillna :

 m = df.isna().sum(axis=1).eq(1)

df = df.where(m, df.fillna('Not Available'))
print (df)
               A              B  C
0              2              3  5
1  Not Available  Not Available  7
2              4              7  9
3            NaN              4  9
4             12              5  8
5  Not Available  Not Available  6