1、apply()函数
1)apply()函数作用
① apply()函数作用于Series
和Series的map()方法作用是一样的,依次取出Series中的每一个元素作为参数,传递给function函数,进行一次转换。
② apply()函数作用于DataFrame
依次取出DataFrame中的每一个元素作为参数,传递给function函数,进行转换。注意:DataFrame中的每一个元素是一个Series。
③ 原始数据链接如下
https://alltodata.cowtransfer.com/s/61ac037949ee4d
2)apply()函数作用于Series
① 案例一:1代表男,0代表女,完成如下替换
df = pd.read_excel(r"C:\Users\黄伟\Desktop\test.xlsx",sheet_name=3) display(df) def func(x): if x == "男" or x == "女": return x elif x == 1: return "男" else: return "女" df["性别"] = df["性别"].apply(func) display(df)
结果如下:
② 案例二:将身高统一替换为“cm”单位
df = pd.read_excel(r"C:\Users\黄伟\Desktop\test.xlsx",sheet_name=3) display(df) def func(x): if x.endswith("cm"): return x else: v = float(x.replace("m","")) return str(v*100)+"cm" df["身高"] = df["身高"].apply(func) display(df)
结果如下:
③ 案例三:提取日期中的年、月、日
df = pd.read_excel(r"C:\Users\黄伟\Desktop\test1.xlsx") display(df) # 注意:这里的日期列,是时间格式 df["year"] = df["日期"].apply(lambda x:x.year) df["month"] = df["日期"].apply(lambda x:x.month) df["day"] = df["日期"].apply(lambda x:x.day) display(df)
结果如下:
3)apply函数作用于DataFrame
① 案例一:求出某些列的均值
df = pd.read_excel(r"C:\Users\黄伟\Desktop\test.xlsx",sheet_name=2) display(df) df1 = df[["语文","物理"]] display(df1) display(type(df1)) df[["语文","物理"]].apply(lambda x:x.mean())
结果如下:
② 打印df中列或行的数据类型
df = pd.read_excel(r"C:\Users\黄伟\Desktop\test.xlsx",sheet_name=2) display(df) x = df.apply(lambda x:print(type(x)),axis=0) print("-------------------------------------") y = df.apply(lambda x:print(type(x)),axis=1)
结果如下:
2、applymap()函数
1)applymap()函数作用
① applymap()函数只能作用于DataFrame
依次取出DataFrame中的每一个具体的元素作为参数,传递给function函数,进行转换。
2)案例说明
df = pd.read_excel(r"C:\Users\黄伟\Desktop\test.xlsx",sheet_name=2) display(df) df[['语文', '数学', '英语', '物理', '化学', '生物']].applymap(lambda x:x+100)
结果如下: