根据另一列值的条件添加具有值的新列

时间:2020-05-09 16:11:49

标签: python

我需要添加带有标签的新列“ 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

1 个答案:

答案 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