Pandas数据处理--替换列中的值

在我们处理数据时,需要设置哑变量或者将连续值按照某个标准划分为几类,例如将性别中的男,女替换为0和1,将BMI值划分为偏瘦、正常、偏胖和肥胖四类
数据集

#data
import pandas as pd
dict_data = {
     'id_card':[111,222,333,444,555,666,777,888],\
             'sex':['f','m','m','f','m','f','f','f'],\
            'BMI':[31,17.5,24.5,23,18.8,26,30,25]}
df = pd.DataFrame(dict_data)
print(df)

#data_result
   id_card sex   BMI
0      111   f  31.0
1      222   m  17.5
2      333   m  24.5
3      444   f  23.0
4      555   m  18.8
5      666   f  26.0
6      777   f  30.0
7      888   f  25.0

1. 性别列’sex’置换成0,1

#python新版本 DataFrame移除了 .ix
df.loc[df['sex']=='f','sex'] = 0
df.loc[df['sex']=='m','sex'] = 1
print(df)

#result
   id_card sex   BMI
0      111   0  31.0
1      222   1  17.5
2      333   1  24.5
3      444   0  23.0
4      555   1  18.8
5      666   0  26.0
6      777   0  30.0
7      888   0  25.0

2. BMI(身体质量指数)按照国内标准置换成’偏瘦’,‘正常’,‘偏胖’,‘肥胖’

分类 BMI(kg/m2)
偏瘦 <18.5
正常 18.5~24
偏胖 24~28
肥胖 ≥ \geq 28

keys: 利用布尔型索引或者利用.index.to_list()拿出对应的行索引

#布尔型索引
pan_1 = df['BMI']<18.5
pan_2 = (df['BMI']>=18.5)&(df['BMI']<24)
pan_3 = (df['BMI']>=24)&(df['BMI']<28)
pan_4 = df['BMI']>=28

df.loc[pan_1,'BMI'] = '偏瘦'
df.loc[pan_2,'BMI'] = '正常'
df.loc[pan_3,'BMI'] = '偏胖'
df.loc[pan_4,'BMI'] = '肥胖'
#.index.to_list()
pan_1 = df[df['BMI']<18.5].index.to_list()
pan_2 = df[(df['BMI']>=18.5)&(df['BMI']<24)].index.to_list()
pan_3 = df[(df['BMI']>=24)&(df['BMI']<28)].index.to_list()
pan_4 = df[df['BMI']>=28].index.to_list()

df.loc[pan_1,'BMI'] = '偏瘦'
df.loc[pan_2,'BMI'] = '正常'
df.loc[pan_3,'BMI'] = '偏胖'
df.loc[pan_4,'BMI'] = '肥胖'
#result
print(df)

   id_card sex BMI
0      111   0  肥胖
1      222   1  偏瘦
2      333   1  偏胖
3      444   0  正常
4      555   1  正常
5      666   0  偏胖
6      777   0  肥胖
7      888   0  偏胖

你可能感兴趣的:(Pandas数据处理,python)