[Pandas] 将某栏位中的值进行替换

8fab0b0cb24240a391a34487a5bc4503.png
 美图欣赏2022/08/01

问题1: 将字段'Channel Name'中的值分别替换成如下结果

'FOX CHINA-DF'替换为'FOC',

'FOX CZECH-DF'替换为'FCZ',

'FOX TEXAS-DF'替换为'FTX'

'FOX JUAREZ'替换为'FJZ',

'FOX JUAREZ-DF'替换为'FJZ DF'

import pandas as pd

df = pd.DataFrame([[1,'FOX CHINA-DF'],
                   [2,'FOX CZECH-DF'],
                   [3,'FOX TEXAS-DF'],
                   [4,'FOX JUAREZ'],
                   [5,'FOX JUAREZ-DF']
                  ],columns = ['P/N','Channel Name'])

# 使用replace方法将'Channel Name'栏位中的值进行替换
df = df.replace({'FOX CHINA-DF':'FOC', 'FOX CZECH-DF':'FCZ', 'FOX TEXAS-DF':'FTX', 
                 'FOX JUAREZ':'FJZ', 'FOX JUAREZ-DF':'FJZ DF'})

df

948daa8ddb0c4700921d3c764a0d699b.png

替换后的df

ee3230d0381e43d9b509ed88cb1fd4b9.png

问题2: 将字段'sex'中的值分别替换成如下结果

'f'替换为0

'm'替换为1

import pandas as pd

df = pd.DataFrame([[1,'f',31],
                   [2,'m',17.5],
                   [3,'m',24.5],
                   [4,'f',23],
                   [5,'m',18.8],
                   [6,'f',26],
                   [7,'f',30],
                   [8,'f',25],
                  ],columns = ['id','sex','BMI'])

df

e3941a74015d4b1c8a9a6c72c2470473.png

方法1

df.loc[df['sex']=='f','sex'] = 0
df.loc[df['sex']=='m','sex'] = 1

替换后的df

c57b711504684da382e504a04d4fcff2.png

方法2

df['sex'] = df['sex'].map({'f':0,'m':1})

替换后的df

a720c10b204242c78ed8451cf7e6a040.png

方法3

df['sex'] = df['sex'].map(lambda x: 0 if x == 'f' else 1)

替换后的df

a720c10b204242c78ed8451cf7e6a040.png

补充扩展:BMI(身体质量指数)按照国内标准置换成'偏瘦','正常','偏胖','肥胖'

4cfc7682d6e647dc87550b461a84da5d.png

方法1: 利用布尔型索引提取出对应的行索引

#布尔型索引
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'] = '肥胖'

替换后的df

dde6385022b9482b87e9e339724ca751.png

方法2: 利用.index.to_list()提取出对应的行索引

#.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'] = '肥胖'

替换后的df  

dde6385022b9482b87e9e339724ca751.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值