Образец:
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