熊猫数据框如果大于0则更改所有值

时间:2018-11-24 14:14:11

标签: pandas dataframe

我有一个数据框

df=

A    B    C
1    2    55
0    44    0
0    0    0

,如果值> 0,我想将值更改为1。

这是正确的方法吗? df.loc [df> 0,] = 1

to give: 
A    B    C
1    1    1
0    1    0
0    0    0

2 个答案:

答案 0 :(得分:3)

使用clip_upper

df = df.clip_upper(1)
print (df)
   A  B  C
0  1  1  1
1  0  1  0
2  0  0  0

脾气暴躁的选择:

df = pd.DataFrame(np.clip(df.values, a_min=0, a_max=1), 
                  index=df.index, 
                  columns=df.columns)
print (df)
   A  B  C
0  1  1  1
1  0  1  0
2  0  0  0

如果没有负整数值,则求解-用ge>=)比较并将掩码转换为整数:

print (df.ge(1))
       A      B      C
0   True   True   True
1  False   True  False
2  False  False  False

df = df.ge(1).astype(int)
print (df)
   A  B  C
0  1  1  1
1  0  1  0
2  0  0  0

答案 1 :(得分:1)

您可以这样做:

df.clip_upper(1)

或者这个:

df.where(df < 1, other=1)