#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