Python 如何在dataframe中部分更改条件值

Python 如何在dataframe中部分更改条件值,python,pandas,Python,Pandas,我有一个数据框,有上下和阶梯列 如果updown列的值是“DOWN”,我想在step列的值之前加“-” 目前的状态是 df["updown"][0] = "DOWN" df["step"][0] = "18" 之后 有办法吗?我试过这个方法,但失败了 df.loc[df["updown"]=="DOWN"] = df["step"].apply(lambd

我有一个数据框,有上下和阶梯列

如果updown列的值是“DOWN”,我想在step列的值之前加“-”

目前的状态是

df["updown"][0] = "DOWN"
df["step"][0] = "18"
之后

有办法吗?我试过这个方法,但失败了

df.loc[df["updown"]=="DOWN"] = df["step"].apply(lambda x: "-" + x)

您需要在赋值表达式的两侧选择,并且可以将其另存为变量以避免代码重复:

df=pd.DataFrame({'updown':['DOWN','UP'],'step':['18','8']})
掩码=df.updown==“向下”
df.loc[mask,'step']='-'+df.loc[mask,'step']
打印(df['step'][0])#'-18'
虽然
step
值是字符串而不是int似乎很奇怪。它是一个数字,但您可以简单地执行以下操作:

df.loc[mask,'step']*=-1

您需要在赋值表达式的两侧进行选择,您可以将其另存为变量以避免代码重复:

df=pd.DataFrame({'updown':['DOWN','UP'],'step':['18','8']})
掩码=df.updown==“向下”
df.loc[mask,'step']='-'+df.loc[mask,'step']
打印(df['step'][0])#'-18'
虽然
step
值是字符串而不是int似乎很奇怪。它是一个数字,但您可以简单地执行以下操作:

df.loc[mask,'step']*=-1
df.loc[df["updown"]=="DOWN"] = df["step"].apply(lambda x: "-" + x)
df1['step']=np.where(df1['updown'].str.contains(r'\DOWN\b'),'-'+df1['step'],df1['step'])