pandas.Series.apply #

系列。apply ( func , Convert_dtype = _NoDefault.no_default , args = () , * , by_row = 'compat' , ** kwargs ) [来源] #

对 Series 的值调用函数。

可以是 ufunc(适用于整个 Series 的 NumPy 函数)或仅适用于单个值的 Python 函数。

参数
函数函数

要应用的 Python 函数或 NumPy ufunc。

Convert_dtype bool, 默认 True

尝试为元素函数结果找到更好的数据类型。如果为 False,则保留为 dtype=object。请注意,某些扩展数组数据类型(例如分类数据类型)始终保留数据类型。

自版本 2.1.0 起已弃用:convert_dtype已弃用。ser.astype(object).apply() 如果你愿意的话,可以这样做convert_dtype=False

参数元组

在系列值之后传递给 func 的位置参数。

by_row False 或“compat”,默认“compat”

如果"compat"func 是可调用的,则 func 将传递 Series 的每个元素,例如Series.map.如果 func 是可调用对象的列表或字典,将首先尝试将每个 func 转换为 pandas 方法。如果这不起作用,将尝试再次调用 apply by_row="compat" ,如果失败,将再次调用 apply by_row=False (向后兼容)。如果为 False,则该函数将立即传递整个系列。

by_rowfunc当是字符串时没有效果。

2.1.0 版本中的新增功能。

**夸格

传递给 func 的附加关键字参数。

返回
系列或数据框

如果 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