Как заменить значения во всем наборе данных? - PullRequest
2 голосов
/ 11 июля 2020

Итак, мне нужно заменить все значения в моем фрейме данных с именем 'x', которые больше 140 и меньше 35, на 0. У меня 600 столбцов, все с именами 1-600. Я пробовал описанный ниже метод, но не могу понять, как применить его ко всему набору данных.

x=x.mask(x['1']>140,0)

Когда я пытаюсь это сделать

x=x.mask(x>140,0)

Это сообщение об ошибке:

TypeError: '>' не поддерживается между экземплярами 'str' и 'int'

Может ли кто-нибудь помочь мне, спасибо.

Ответы [ 2 ]

2 голосов
/ 11 июля 2020

Если вы пишете x, это означает фрейм данных, чтобы адресовать его содержимое, вы должны написать x[:]:

x = x.mask(x[:]>140, 0)
2 голосов
/ 11 июля 2020

Сначала преобразуйте все столбцы вашего фрейма данных в тип int, используя df = df.astype(int)

Вы можете попробовать numpy astype:

a = df.values
#convert datatype to int
a = a.astype(int)
pd.DataFrame(np.where(( a > 140) | (a < 35) , 0, a))

Кроме того, вы можете использовать mask следующим образом:

df.mask((df > 140) | (df < 35) , 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...