方法形式为apply(func, convert_dtype=True, args=(), **kwargs),返回Series或Dataframe,对Series的每一个值都应用func函数,func函数可以是ufunc(适用于整个Series的numpy函数), 或仅适用于单个值的Python函数。
参数解析:
func:函数,要应用的python函数或numpy ufunc。
convert_dtype:布尔值,默认为True,尝试为函数结果的元素找到更好的dtype。如果为False,则保留为dtype=object。
需要注意,对于某些扩展数组dtypes,例如Categorical,要始终保留dtype。
args:元组,在Series的值之后,传递给func的位置参数。
**kwargs:传递给func的附加关键字参数。
返回:
导入包
import pandas as pd
import numpy as np
创建一个城市对夏季温度的Series。
s = pd.Series([20, 21, 12], index=['London', 'New York', 'Helsinki'])
s
输出:
London 20
New York 21
Helsinki 12
dtype: int64
定义一个函数,并作为func参数传递给Series的apply()方法。
def square(x):
return x ** 2
s.apply(square) # func参数返回的是值,故apply返回的是Series
输出:
London 400
New York 441
Helsinki 144
dtype: int64
通常使用lambda匿名函数作为func参数传递给apply()方法。
s.apply(lambda x: x**2)
输出:
London 400
New York 441
Helsinki 144
dtype: int64
定义一个需要额外位置参数的自定义函数,并使用args参数进行传递。
def subtract_custom_value(x, custom_value):
return x - custom_value
s.apply(subtract_custom_value, args=(5, ))
输出:
London 15
New York 16
Helsinki 7
dtype: int64
定义一个接受关键字参数,并这些参数传递给apply。
def add_custom_values(x, **kwargs):
for month in kwargs:
x += kwargs[month]
return x
s.apply(add_custom_values, june=30, july=30, august=25)
输出:
London 105
New York 106
Helsinki 97
dtype: int64
使用numpy中的函数。
s.apply(np.sqrt)
输出:
London 4.472136
New York 4.582576
Helsinki 3.464102
dtype: float64