对Pandas数据框架中的每一行应用函数

  • Post category:Python

对Pandas数据框架中的每一行应用函数通常有两种方式:apply()和applymap(),这两种方式有着不同的使用场景和应用方式。

使用apply()方法对每一行应用函数

apply()方法主要针对数据框架中的某一个维度进行处理,通常是对每一行应用一个自定义函数。apply()方法的用法如下:

df.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds)
  • func:要应用的函数,可以是自定义函数或者lambda表达式。
  • axis:默认值为0,表示对每一列进行函数应用;设置为1则表示对每一行进行函数应用。
  • args:一个元组或列表,传递到函数中的位置参数。
  • **kwds:一个字典对象,传递到函数中的关键字参数。

例如,我们有以下的数据框架:

import pandas as pd

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
})

如果我们想要对每一行进行求和操作,可以使用 apply() 方法和 lambda 表达式来实现:

df.apply(lambda x: x.sum(), axis=1)

这个例子会对数据框架中的每一行进行求和操作,返回一个 pandas.Series 对象,其中包含每一行的和。

使用applymap()方法对每一个元素应用函数

applymap()方法与apply()方法相似,不过它是对每一个元素进行函数应用。一般来说,applymap()方法仅用于元素级别的操作(即对每一个元素进行相同的操作)。applymap()方法的用法如下:

DataFrame.applymap(func)
  • func:要应用的函数,可以是自定义函数或者lambda表达式。

例如,我们有以下的数据框架:

import pandas as pd

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
})

如果我们想要对每一个元素进行平方根操作,可以使用 applymap() 方法和 numpy 库来实现:

import numpy as np

df.applymap(np.sqrt)

这个例子会对数据框架中每一个元素进行平方根操作,返回一个新的数据框架,其中每一个元素都被平方根化了。