У меня есть df с тремя столбцами a
, b
, c
. Я хочу изменить NaN
значения в столбце b
. Например: для значения 123
в столбце a
столбец b
имеет значения abc
и NaN
. Я хочу изменить оба значения на abc
.
raw_data = {'a': [123, 123, 456, 456],
'b': [np.nan,'abc','def',np.nan],
'c':[np.nan,np.nan,0,np.nan]}
df = pd.DataFrame(raw_data, columns = ['a', 'b','c'])
a b c
0 123 NaN NaN
1 123 abc NaN
2 456 def 0
3 456 NaN NaN
Мой ожидаемый результат
df
a b c
1 123 abc NaN
0 123 abc NaN
2 456 def 0
3 456 def NaN
Что я пробовал:
df = df.sort_values(by=['a','b']).fillna(method='ffill')
Но это меняет column c
также.
Вывод сверху:
a b c
1 123 abc NaN
0 123 abc NaN
2 456 def 0
3 456 def 0
Как использовать ffill
для определенного столбца или любые другие рекомендуемые подходы?
Пример данных 2:
raw_data = {'a': [123, 123, 456, 456,789,np.nan],
'b': [np.nan,'abc','def',np.nan,np.nan,'ghi'],
'c':[np.nan,np.nan,0,np.nan,np.nan,np.nan]}
df = pd.DataFrame(raw_data, columns = ['a', 'b','c'])
a b c
0 123.0 NaN NaN
1 123.0 abc NaN
2 456.0 def 0
3 456.0 NaN NaN
4 789.0 NaN NaN
5 NaN ghi abc
Ожидаемый результат
a b c
0 123.0 abc NaN
1 123.0 abc NaN
2 456.0 def 0
3 456.0 def NaN
4 789.0 NaN NaN
5 NaN ghi abc