pandas的apply函数用法详解

  • Post category:Python

pandas的apply函数用法详解

简介

apply() 是 pandas 中非常强大的一个数据处理函数。它可以对一个数据集的行或列进行操作,返回处理后的结果。使用apply()可以大大提高数据处理效率,缩短代码编写时间。

Python pandas 数据分析库是基于 NumPy 库的一个开源数据分析工具,它可用于数据清洗和整理,如删除、替换、排序和合并数据。pandas 大多数的操作都以 DataFrame(数据帧) 和 Sereis(一组带标签的数据)为主。pandas 的 apply() 函数用于对 DataFrame 行或列的数据进行操作。

语法

apply的语法如下:

DataFrame.apply(func, axis=0, args=(), **kwds)

其中:

  • func : 传入的函数可以是普通函数,也可以是lambda表达式。
  • axis : 设置取值为 0 或1,代表以行(0)或列(1)为单位来进行操作。
  • args : 传入func的位置参数,使用元组。
  • kwargs : 传入func的关键字参数。

示例

示例1

以下是一个操作 DataFrame 行进行求和运算的示例。

import pandas as pd

data = {'one': [1, 1], 'two': [2, 2], 'three': [3, 3]}
df = pd.DataFrame(data)

def sum_row(row):
    return sum(row)

df['row_sum'] = df.apply(sum_row, axis=1)
print(df)

输出结果:

   one  two  three  row_sum
0    1    2      3        6
1    1    2      3        6

这个示例中,我们定义了一个函数 sum_row,该函数用于对 DataFrame 每一行进行求和操作。我们使用 apply() 函数调用该函数,传递 axis=1 参数表示按照行进行操作,将结果赋值给新创建的列 row_sum

示例2

以下是一个处理 DataFrame 列,进行对数变换的示例。

import pandas as pd
import math

data = {'one': [1, 2], 'two': [2, 4], 'three': [3, 6]}
df = pd.DataFrame(data)

def log10(val):
    return math.log10(val)

df['one_log'] = df['one'].apply(log10)
df['two_log'] = df['two'].apply(log10)
df['three_log'] = df['three'].apply(log10)
print(df)

输出结果:

   one  two  three   one_log   two_log  three_log
0    1    2      3  0.000000  0.301030   0.477121
1    2    4      6  0.301030  0.602060   0.778151

以上示例中,我们定义了一个函数 log10,该函数用于求每一个值的对数,使用 apply() 函数对 DataFrame 的每一列进行操作,将结果赋值给新创建的列 one_log、two_log 和 three_log。