Pandas替换所有数值不等于特定值的值

4

我的数据框:

            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个回答

7

您可以简单地使用

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

4

对于零值情况,您可以利用非零值被视为“Truthy”的事实:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接