Замена значений на 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) никакой нет.