
问题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
替换后的df
问题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
方法1
df.loc[df['sex']=='f','sex'] = 0
df.loc[df['sex']=='m','sex'] = 1
替换后的df
方法2
df['sex'] = df['sex'].map({'f':0,'m':1})
替换后的df
方法3
df['sex'] = df['sex'].map(lambda x: 0 if x == 'f' else 1)
替换后的df
补充扩展:BMI(身体质量指数)按照国内标准置换成'偏瘦','正常','偏胖','肥胖'
方法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
方法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