pandas.Series.apply#
- Series.apply(func, args=(), *, by_row='compat', **kwargs)[源代码][源代码]#
在 Series 的值上调用函数。
可以是 ufunc(应用于整个 Series 的 NumPy 函数)或仅适用于单个值的 Python 函数。
- 参数:
- 函数函数
要应用的Python函数或NumPy ufunc。
- 参数tuple
在序列值之后传递给 func 的位置参数。
- 按行False 或 “compat”,默认 “compat”
如果
"compat"
并且 func 是可调用的,func 将传递给 Series 的每个元素,类似于Series.map
。如果 func 是一个可调用对象的列表或字典,将首先尝试将每个 func 转换为 pandas 方法。如果这不起作用,将尝试使用by_row="compat"
再次调用 apply,如果失败,将使用 ``by_row=False``(向后兼容)再次调用 apply。如果为 False,func 将一次性传递整个 Series。当
func
是字符串时,by_row
没有效果。Added in version 2.1.0.
- **kwargs
传递给 func 的额外关键字参数。
- 返回:
- Series 或 DataFrame
如果 func 返回一个 Series 对象,结果将是一个 DataFrame。
参见
Series.map
逐元素操作。
Series.agg
仅执行聚合类型的操作。
Series.transform
仅执行转换类型的操作。
备注
修改传递对象的函数可能会产生意外行为或错误,并且不受支持。更多详情请参见 使用用户定义函数 (UDF) 方法进行变异。
例子
创建一个系列,包含每个城市典型的夏季温度。
>>> s = pd.Series([20, 21, 12], index=["London", "New York", "Helsinki"]) >>> s London 20 New York 21 Helsinki 12 dtype: int64
通过定义一个函数并将它作为参数传递给
apply()
来对值进行平方。>>> def square(x): ... return x**2 >>> s.apply(square) London 400 New York 441 Helsinki 144 dtype: int64
通过传递一个匿名函数作为参数给
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=20, august=25) London 95 New York 96 Helsinki 87 dtype: int64
使用 Numpy 库中的一个函数。
>>> s.apply(np.log) London 2.995732 New York 3.044522 Helsinki 2.484907 dtype: float64