Как заполнить срез с пропусками значений в DataFrame?

269 просмотра
0
0 Комментариев

Есть такой код:

df = pd.DataFrame({'A': [1, np.nan, np.nan, np.nan, 4],
                   'B': ['a', 'b', 'b', 'c', np.nan]})
df

Результат:

введите сюда описание изображения

Выполняю команду:

df[(df['A'].isnull()) & (df['B'] == 'b')].fillna(0, inplace=True)

И ничего не меняется в исходном df.

Подскажите как заменить данные в df по условиям: заполнить пустые значения в колонке А, если в колонке В значение b?


Добавить комментарий

1 Ответы

Python Опубликовано 10.12.2018
0

Проблема в том что работая со срезом вы работаете с копией данных (подробнее об этом можно прочесть здесь и здесь).

Попробуйте так:

In [17]: df.loc[(df['A'].isnull()) & (df['B']=='b'), 'A'] = 0
 
In [18]: df
Out[18]:
     A    B
0  1.0    a
1  0.0    b
2  0.0    b
3  NaN    c
4  4.0  NaN

альтернативный вариант:

In [24]: df.update(df.loc[(df['A'].isnull()) & (df['B'] == 'b'), 'A'].fillna(0))
 
In [25]: df
Out[25]:
     A    B
0  1.0    a
1  0.0    b
2  0.0    b
3  NaN    c
4  4.0  NaN

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up