单个参数的apply自定义函数使用方法:
import pandas as pd
# 1. 数据准备
df = pd.DataFrame({
'a':[10,20,30],
'b':[20,30,40]
})
# 2. 函数定义
def my_sq(x):
'''求平方'''
return x**2
# 3. 调用apply并传入函数对象
sq = df['a'].apply(my_sq)
'''
0 100
1 400
2 900
Name: a, dtype: int64
'''
多个参数的apply自定义函数使用方法:
# 1. 定义一个函数,包含两个参数
def my_exp(x,e):
return x**e
# 2. 使用apply调用函数,并使用键值对的方式传入参数
ex = df['a'].apply(my_exp,e=2)
DataFrame的apply自定义函数和Series自定义行数使用方法并无明显区别,但是,二者的工作原理不同。
# df和my_sq在上文定义
df.apply(my_sq)
'''
a b
0 100 400
1 400 900
2 900 1600
'''
Series的apply自定义方法是针对每个元素调用函数,
而DataFrame的apply自定义方法是针对DF的行或者列调用函数,具体是针对行还是针对列,要取决于传入的参数。
apply函数有axis参数,当
def avg_3_apply(col):
x = col[0]
y = col[1]
z = col[2]
return (x+y+z)/3
# axis = 0 是默认的,不需要传参
df.apply(avg_3_apply)
'''
a 20.0
b 30.0
dtype: float64
'''
def avg_2_apply(row):
x = row[0]
y = row[1]
return (x + y) / 2
df.apply(avg_2_apply, axis=1)
'''
0 15.0
1 25.0
2 35.0
dtype: float64
'''