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)

结果如下:

            

posted on 2020-09-18 20:40  math98  阅读(1229)  评论(0)    收藏  举报