apply是pandas处理数据经常用到的函数。我们可以用DataFrame的apply函数实现对多列、多行的操作。可通过axis设置参数,设为1是对列进行操作,参数axis设为0是对行操作。apply经常跟lambda一起使用,非常方便,大大提高了效率。
构造数据
import pandas as pd data = [ ['张三', '专科', '湖北', '22','2021-06-29'], ['李四', '本科', '河北', '23','2021-06-29'], ['王五', '硕士', '北京', '29','2019-03-21'], ['赵六', '博士', '内蒙', '30','2019-06-25'], ['吴七', '本科', '内蒙', '25','2019-06-25'], ['范八', '本科', '吉林', '25','2018-06-25'] ] df = pd.DataFrame(data, columns=['姓名', '学历', '籍贯', '年龄','毕业时间']) df
单列操作
#毕业时间仅显示年份 df['毕业时间']=df['毕业时间'].apply(lambda x :x[:4]) df
多列关联操作
#现在有1个岗位,需本科以上学历,年龄小于28才能匹配。 #定义函数 def f(a,b): if a in ['本科','硕士','博士']and int(b)<28: return '匹配' else: return '不匹配' df['是否匹配岗位']=df.apply(lambda x: f(x['学历'],x['年龄']),axis=1)#axis=1,表示横向,对列进行操作,axis=0表示竖向操作,是增加一行 df
多行关联操作
#展示一下行操作,行之间的操作用的较少,这里主要展示与列操作的区别。axis=0与axis=1的区别。 #定义函数 def f2(a,b): return a+b df.loc[6]=df.apply(lambda x: f2(x[1],x[5]),axis=0)#axis=1,表示横向,对列进行操作,axis=0表示竖向操作,增加一行 df