我需要添加带有标签的新列“ Label”,这些标签依赖于另一列“值”上的值
即如果值<-50,则将其标记为“关键”,如果在-50&-40之间,则将其标记为“主要”;如果在-40&-30之间,则将其标记为“标准”,如果将其> -30,则将其标记为“正常”
我的代码不起作用
X['Label'][X['Value']>=-30]="Normal"
X['Label'][X['Value']<-30][X['RSLDEV']>=-40]='Standard'
X['Label'][X['Value']<-40][X['RSLDEV']>=-50]="Major"
X['Label'][X['Value']<-50]="Critical"
注意:我不需要使用for循环
outout如下:
值标签 -52.13446严重 -49.782227专业 -46.363266专业 -45.591278专业 -45.591278专业 -44.51123专业 -42.430695专业 -40.330933专业 -35.779465标准 -35.779465标准 -29.621201正常
它因for循环而失败:
X['Label']='Normal'
for x in range(len(X['Value'])):
if X['Value'].iloc[x] >=-6 and X['Value'].iloc[x] <-3:
X['Label']='Standard'
elif X['Value'].iloc[x] >=-12 and X['Value'].iloc[x] <-6:
X['RSLDEVD']='Major'
elif X['Value'].iloc[x] <-12:
X['RSLDEVD']='Critical'
else:
pass
答案 0 :(得分:1)
您可以使用lambda
创建函数,然后apply
将其移到数据框中所需的列,请参见下文:
import pandas as pd
d = {'Value':[-55, -45, -35, -25]}
df = pd.DataFrame(data = d)
df['Label'] = df.Value.apply(lambda x: "Critical" if x <= -50 else ( "Major" if x < -40 and x >= -50 else ("Standard" if x < -30 and x >= -40 else "Normal")))
print(df)
Value Label
0 -55 Critical
1 -45 Major
2 -35 Standard
3 -25 Normal