Как заменить нули в Pandas Data Frame на отрицательные 1 - PullRequest
0 голосов
/ 28 мая 2019

Заменить отрицательные числа на ноль просто, см. Как заменить отрицательные числа в кадре данных Pandas на ноль , но я хочу знать, как поступить наоборот.

Я хочу заменить 0 здесь на -1:

enter image description here

Но df.replace(0,-1) или df[df == 0] = -1 дает мне

enter image description here

Кажется, что я могу заменить нули на положительные целые числа, но не могу заменить их отрицательными целыми числами (т. Е. df.replace(0,-3) заменяет все мои нули на-253).

Я что-то здесь упускаю?

1 Ответ

3 голосов
/ 28 мая 2019

Я считаю, что у вас есть тип данных 8-битное целое число без знака. Для этого типа данных нет отрицательных значений и, следовательно, -1 переполняется (недополняется?) До наибольшего такого числа.

df = pd.DataFrame([[0, 1], [1, 0]], dtype=np.uint8)

df.replace(0, -1)

     0    1
0  255    1
1    1  255

Где 255 является наибольшим таким числом.

np.iinfo(np.uint8).max

255

Вместо этого сначала установите тип данных

df.astype(int).replace(0, -1)

   0  1
0 -1  1
1  1 -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...