Как заполнить NA, удовлетворяющий определенному условию, используя - PullRequest
1 голос
/ 19 сентября 2019

В кадре данных с именем titanic как заполнить NA значения в столбце Cabin значением B, которое удовлетворяет условию Pclass==3?

Следует использовать where?Что-то вроде

titanic['Cabin']=titanic.where(titanic.Pclass==3).fillna('B')

Другие методы также приветствуются.

@ jezreal: reference

1 Ответ

1 голос
/ 19 сентября 2019

Образец:

titanic = pd.DataFrame({'Pclass':[1,3,3] * 2,
                         'Cabin':[np.nan] * 2 + ['s','d','f'] + [np.nan]})

Вы можете выбрать строки по условию для замены отсутствующих значений:

m = titanic.Pclass==3

titanic.loc[m, 'Cabin'] = titanic.loc[m, 'Cabin'].fillna('B')

Или вы можете связать оба условия с & для побитового AND изаменить B:

titanic.loc[(titanic.Pclass==3) & (titanic.Cabin.isna()), 'Cabin'] = 'B'  

Или решение с Series.where - условия инвертируются с !=3, Series.notna и | для побитовогоOR:

titanic['Cabin'] = titanic['Cabin'].where((titanic.Pclass!=3) | (titanic.Cabin.notna()), 'B')
print (titanic)
   Pclass Cabin
0       1   NaN
1       3     B
2       3     s
3       1     d
4       3     f
5       3     B
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...