本章分享一个字符串的拆分技巧,以及字符串怎么转化为整形数据用于计算。
任务要求:将salary列数据转换为最大值与最小值的平均值
1.数据的创建
import pandas as pd
dict={"name":["小王","小明","小辉","小红","小李"],
"education":["大专","本科","研究生","本科","本科"],
"salary":["6k-10k","7k-9k","10k-15k","10k-12k","5k-8k"]}
df=pd.DataFrame(dict)
df
结果如下:
2.求解过程与技巧
两种方法:方法一简单易懂,方法二简洁高效
2.1方法一:
import re
b=[]
a=df["salary"].str.replace("k","") #此处用replace将k替换为空
for i in range(len(a)):
b.append(re.split('-',a[i])) #split按'-'将字符串拆分
mean_salary=[]
for i in range(len(b)):
mean_salary.append(int((int(b[i][0])+int(b[i][1]))/2*1000)) #int()将字符串转为int类型
dict={"mean_salary":mean_salary}
c=pd.DataFrame(dict)
df=pd.concat([df,c],axis=1)
df.drop("salary",axis=1)
结果显示:
2.2方法二:
import re
# :apply + 自定义函数
def func(df):
lst = df['salary'].split('-')
smin = int(lst[0].strip('k'))
smax = int(lst[1].strip('k'))
df['salary'] = int((smin + smax) / 2 * 1000)
return df
df = df.apply(func,axis=1)
结果显示:
总结一下:方法二优势明显,需要熟练掌握apply的运用以及函数的定义;
方法一中的一些函数也常用,对于数据分析必须掌握,如:replace、split和int类型的转化,字典转DataFrame等