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

时间:2018-10-27 18:05:45

标签: python pandas 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 :(得分:3)

您可以简单地使用

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

答案 1 :(得分:2)

对于零情况,您可以使用将非零值视为“真”的事实:

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