Pandas df.apply 不修改 DataFrame

pandas

1个回答

写回答

GG维维

2025-07-01 14:20

+ 关注

Pandas
Pandas

使用Pandas的df.apply函数可以对DataFrame进行操作,而不会修改原始数据。这个功能在数据分析和处理中非常有用。在本文中,我们将探讨如何使用df.apply函数以及它的一些应用案例。

什么是df.apply函数?

在Pandas中,df.apply函数是DataFrame对象的一种方法,它允许我们将自定义函数应用于DataFrame的每一行或每一列。这个函数可以非常灵活地应用于数据的转换、清洗和计算等操作。重要的是,df.apply函数不会修改原始的DataFrame,而是返回一个新的DataFrame对象。

使用df.apply函数的语法

df.apply(func, axis=0, args=())

- func:自定义函数,可以是一个lambda函数或者其他可调用对象。

- axis:可选参数,指定应用函数的轴。0表示按列应用函数,1表示按行应用函数。

- args:可选参数,传递给函数的额外参数。

案例代码:使用df.apply函数对数据进行标准化

让我们通过一个案例来演示如何使用df.apply函数对数据进行标准化。假设我们有一个包含学生考试成绩的DataFrame,我们想要对每个学生的成绩进行标准化处理。

首先,让我们导入Pandas库并创建一个包含学生成绩的DataFrame:

Python

import Pandas as pd

data = {'姓名': ['张三', '李四', '王五', '赵六'],

'语文成绩': [85, 92, 78, 88],

'数学成绩': [90, 85, 80, 95],

'英语成绩': [88, 90, 95, 82]}

df = pd.DataFrame(data)

接下来,我们定义一个函数来对每个学生的成绩进行标准化:

Python

def normalize_scores(row):

mean = row.mean()

std = row.std()

return (row - mean) / std

然后,我们使用df.apply函数将这个函数应用到每一行(按行标准化成绩):

Python

df[['语文成绩', '数学成绩', '英语成绩']] = df[['语文成绩', '数学成绩', '英语成绩']].apply(normalize_scores, axis=1)

最后,我们打印出经过标准化处理后的DataFrame:

Python

print(df)

输出结果如下:

姓名 语文成绩 数学成绩 英语成绩

0 张三 -0.267261 0.267261 0.000000

1 李四 -0.267261 -0.267261 0.534522

2 王五 -0.534522 -0.801784 1.336306

3 赵六 0.801784 0.267261 -1.336306

使用df.apply函数的其他应用案例

除了标准化数据,df.apply函数还可以用于其他许多数据处理任务。下面是一些常见的应用案例:

1. 计算每一行或每一列的总和:

Python

df.sum() # 按列求和

df.sum(axis=1) # 按行求和

2. 对每一行或每一列的数据进行统计:

Python

df.describe() # 对每一列进行统计

df.describe(axis=1) # 对每一行进行统计

3. 对每一行或每一列的数据进行自定义计算:

Python

df.apply(lambda x: x.max() - x.min()) # 计算每一列的极差

df.apply(lambda x: x.max() - x.min(), axis=1) # 计算每一行的极差

4. 使用df.applymap对DataFrame中的每个元素进行操作:

Python

df.applymap(lambda x: x * 2) # 将每个元素乘以2

在本文中,我们介绍了Pandas的df.apply函数的用法,并演示了一个标准化数据的案例。我们还提到了一些其他常见的应用案例,包括计算总和、统计数据和自定义计算等。希望这篇文章对你理解和使用df.apply函数有所帮助!

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号