Замена значений на NaN

Работаю с таблицей данных, в которых есть как положительные, так и отрицательные значения.

Как в определённом столбце заменить все положительные значения на NaN?

Пробовал так:

df.loc[df['days_employed'] > 0, 'days_employed'] = "NaN"

Но мне выдало ошибку.


Ответы (2 шт):

Автор решения: MaxU

Пример:

In [54]: df
Out[54]: 
   a  b
0  1  2
1 -1  3
2  0  4
3  5 -1

In [55]: df.loc[df["a"].gt(0), "a"] = np.nan

In [56]: df
Out[56]: 
     a  b
0  NaN  2
1 -1.0  3
2  0.0  4
3  NaN -1

→ Ссылка
Автор решения: CrazyElf

Вообще ошибки быть никакой не должно, за исключением случая, когда вы пытаетесь проделать эту операцию несколько раз (либо если у вас в столбце уже были строковые данные по какой-то причине):

df.loc[df['days_employed'] > 0, 'days_employed'] = "NaN"
df.loc[df['days_employed'] > 0, 'days_employed'] = "NaN"

Ошибка:

TypeError: '>' not supported between instances of 'str' and 'int'

Если использовать np.nan, что более правильно, ошибки не будет:

df.loc[df['days_employed'] > 0, 'days_employed'] = np.nan
df.loc[df['days_employed'] > 0, 'days_employed'] = np.nan

Разницы между > 0 и .gt(0) никакой нет.

→ Ссылка