『python系列』apply,map,lambda等五种函数在字段映射上的示例应用



1. 构造示例样本 
需对样本中年龄字段作映射,将缺失值映射为 -1,[25,45) 区间值映射为 1,其它为 -2。

'''构造示例样本'''
import pandas as pd
import numpy as np
data = pd.DataFrame({"性别": ['F', 'F', 'M', 'M', 'M',np.NaN],
"年龄": [30, 28, 46, 30, 37,np.NaN]},
index=['A01','A02','A03','A04','A05','A06'])
data

2. 函数实现示例 

  • def:函数名 + 参数 + return 返回值(如需)

    apply :apply(func,*args,**kwargs)

'''方法一:def+apply 函数组合'''
def age_new(df):
if pd.isna(df['年龄']):
return -1
elif 25<=df['年龄']<45:
return 1
else:
return -2


data['age_new']=data.apply(age_new,axis=1)
data

  • lambda:称为匿名函数,使用 lambda 关键字创建匿名函数

'''方法二:def+apply+lambda 函数组合'''
def age_new(var):
if pd.isna(var):
return -1
elif 25<=var<45:
return 1
else:
return -2


data['age_new']=data['年龄'].apply(lambda x:age_new(x))
data

'''方法三:apply+lambda 函数组合'''
data['age_new']=data['年龄'].apply(lambda x: -1 if pd.isna(x)==True else 1 if 25<=x<45 else -2)
data

'''方法四:def+map 函数组合'''
def age_new(var):
if pd.isna(var):
return -1
elif 25<=var<45:
return 1
else:
return -2
data['age_new']=pd.DataFrame(map(age_new,data['年龄']),index=data.index)
data

'''方法五:lambda+map 函数组合'''
data['age_new']=pd.DataFrame(map(lambda x: -1 if pd.isna(x)==True else 1 if 25<=x<45 else -2,data['年龄']),index=data.index)
data

  • applymap 是元素级的 map,用来操作 DataFrame 中的每一个元素,不支持限制特定列,比如可以用来批量转换 DataFrame 当中所有数据字段的格式。

'''方法六:lambda+applymap 函数组合'''
tmp=pd.DataFrame(data['年龄'])
data['age_new']=tmp.applymap(lambda x: -1 if pd.isna(x)==True else 1 if 25<=x<45 else -2)
data

题图来源:网站Pexels


THE END

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/239580.html

联系我们
联系我们
分享本页
返回顶部