pandas进阶–Series的apply方法

apply方法介绍

方法形式为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的附加关键字参数。

返回:

  • Series或Dataframe。如果func返回一个Series对象,则结果将是一个Dataframe。

用例1

导入包

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)

输出:

London      400
New York    441
Helsinki    144
dtype: int64

用例2

通常使用lambda匿名函数作为func参数传递给apply()方法。

s.apply(lambda x: x**2)

输出:

London      400
New York    441
Helsinki    144
dtype: int64

用例3

定义一个需要额外位置参数的自定义函数,并使用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

用例4

定义一个接受关键字参数,并这些参数传递给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

用例5

使用numpy中的函数。

s.apply(np.sqrt)

输出:

London      4.472136
New York    4.582576
Helsinki    3.464102
dtype: float64

Original: https://blog.csdn.net/qq_38727995/article/details/124406447
Author: 凯旋.Lau
Title: pandas进阶–Series的apply方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/753440/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球