从if else语句创建新列

时间:2018-02-14 08:38:22

标签: python pandas numpy

我有一个名为data的数据框,其变量为salary,范围为

SALARY:0 1 2 3 ...  1000

我想打开薪水变量并创建一个新的变量工资带。如果薪水= 0表示缺少乐队,1-200表示低,200-800表示中等,800表示高。

data['SALARY_BAND'] = np.where(data['SALARY']<=0, 'Missing', 
                             np.where(data['SALARY'] <=200, 'low'),
                              np.where(data['SALARY'] <800, 'mid','high' ))

当我跑的时候我得错误值y

2 个答案:

答案 0 :(得分:3)

我会使用cut函数:

df = pd.DataFrame(list(range(0, 1001, 10)), columns=['SALARY'])
df['SALARY_BAND'] = pd.cut(df.SALARY,
                           [-1, 0, 200, 800, df.SALARY.max()],
                           labels=['Missing', 'low', 'mid', 'high'])

答案 1 :(得分:0)

试试这个:

data['SALARY_BAND'] = np.where(data['SALARY']<=0, 'Missing', 
                        np.where(data['SALARY'] <=200, 'low',
                          np.where(data['SALARY'] <800, 'mid','high' )))