Панды заменяют все числовые значения, не равные конкретному значению - PullRequest
0 голосов
/ 27 октября 2018

Мой DataFrame:

            HLLM  HXBX  JHWO  RPNZ  ZHNL
2008-08-31     0     0     0     0     0
2008-09-30     0     0     0     0     0
2008-10-31     3     1     0     0     5
2008-11-30     0    -1     0     0     0

Я пытаюсь заменить все значения, которые НЕ равны 0, на значение 1

df = df.replace(df != 0, 1)

Как мне переписать это, чтобы оно работало

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Вы можете просто использовать

df[df != 0] = 1        

HLLM  HXBX  JHWO  RPNZ  ZHNL
2008-08-31     0     0     0     0     0
2008-09-30     0     0     0     0     0
2008-10-31     1     1     0     0     1
2008-11-30     0     1     0     0     0
0 голосов
/ 27 октября 2018

Для нулевого случая вы можете использовать тот факт, что ненулевые значения считаются «Истиной»:

df = df.astype(bool).astype(int)

Для общего случая вы можете использовать pd.DataFrame.mask:

df.mask(df.ne(0), 1, inplace=True)

print(df)

            HLLM  HXBX  JHWO  RPNZ  ZHNL
2008-08-31     0     0     0     0     0
2008-09-30     0     0     0     0     0
2008-10-31     1     1     0     0     1
2008-11-30     0     1     0     0     0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...