更改多列值

时间:2019-06-19 13:47:43

标签: python pandas

我试图根据熊猫中的条件更改所有列的值(如果第1列的值大于1,则将其设置为1),我可以为一列做到这一点而不会遇到任何错误,但是

如果多列的值都大于一,将多列设置为一,怎么可能呢?

df.loc[df['column1']>=1,'column1'] =1

上面的行工作正常,但下面的行不起作用:

df.loc[df['column1','column2']>=1,['column1','column2']] = 1

我收到以下错误消息,我们将不胜感激 KeyError: ('column1', 'column2')

1 个答案:

答案 0 :(得分:2)

我不认为.loc[]最适合多维密钥,建议尝试np.where()

df[['column1','column2']]=np.where(df[['column1','column2']]>=1,1,df[['column1','column2']])

添加示例:

np.random.seed(123)
df=pd.DataFrame(np.random.randint(-2,4,20).reshape(5,4),
                columns=[f'column{i+1}' for i in range(4)])
print(df)

   column1  column2  column3  column4
0        3        0        2        0
1       -1        1        0        1
2       -1       -1       -2       -1
3       -1       -2       -2       -1
4        1        3        2       -2

df[['column1','column2']]=np.where(df[['column1','column2']]>=1,1,df[['column1','column2']])
print(df)

   column1  column2  column3  column4
0        1        0        2        0
1       -1        1        0        1
2       -1       -1       -2       -1
3       -1       -2       -2       -1
4        1        1        2       -2