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
* map映射方法
# ways-1 字典
# df['sex'] = df['sex'].map({'f':0,'m':1})

# ways-2 函数
df['sex'] = df['sex'].map(lambda x: 0 if x == 'f' else 1)

# 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  偏胖
  • 17
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值