Python pandas中apply函数简介以及用法详解
apply()
函数是pandas库中常用的一个函数,它可以对DataFrame的某一列或某一行进行操作。本篇文章将详细讲解apply()
函数的作用、语法及使用方法,并给出两个示例说明。
apply()函数的作用
apply()
函数的主要作用是对DataFrame的某一列或某一行进行计算。它的返回值可以是标量、Series或DataFrame。你可以将自己编写的任何函数作为apply()
函数的参数,并在该函数中对列或行进行计算。
apply()函数的语法
apply()
函数的语法如下:
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
其中,参数的含义为:
-
func
:可以是函数、字符串函数名或可调用的Python对象。该函数将应用于每行或每列。 -
axis
:按行或按列应用函数,0表示按列应用函数;1表示按行应用函数。 -
raw
:A boolean value.如果为True,则通过传递未经包装的行/列而不是Series对象来优化。 -
result_type
:{'expand', 'reduce', 'broadcast', None}
,默认为None。指定返回值的数据类型。expand表示返回DataFrame;reduce表示为Series;broadcast表示在传递axis=1
时,每个行的函数结果沿所有列传播。None表示让pandas自行推断返回值类型。 -
args
:包含传递给func
的位置参数的元组。 -
**kwds
:包含传递给func
的关键字参数的字典。
apply()函数的使用方法
下面给出两个示例说明apply()函数的使用方法。
示例1:求每个学生的总成绩
在本例中,我们将使用apply()函数来计算每个学生的总成绩。首先,我们定义一个函数,该函数将一个DataFrame作为输入参数,并返回该DataFrame中每行中所有值的总和。
import pandas as pd
# 定义一个函数,计算DataFrame中每行的和
def row_sum(row):
return row.sum()
# 定义DataFrame
df = pd.DataFrame({'语文': [90, 80, 70], '数学': [85, 95, 75], '英语': [95, 90, 80]})
# 将函数应用于每行
df['总成绩'] = df.apply(row_sum, axis=1)
print(df)
输出结果:
语文 数学 英语 总成绩
0 90 85 95 270
1 80 95 90 265
2 70 75 80 225
在这个例子中,row_sum()
函数被传递给了apply()
函数,它将df
的每一行都当做输入参数。apply()
函数返回一个Series对象,其中包含每行的总和。最后,我们将这个Series对象赋给一个新列总成绩
。
示例2:对每个元素进行相乘操作
下面让我们看一个更加实际的例子。在这个例子中,我们将会把一个由整数组成的DataFrame中的每个元素都乘以2。
import pandas as pd
# 定义函数,将一个整数乘以2
def mult_2(num):
return num * 2
# 定义DataFrame
df = pd.DataFrame({'num1': [1, 2, 3], 'num2': [4, 5, 6], 'num3': [7, 8, 9]})
# 使用apply()对每个元素应用函数
df = df.applymap(mult_2)
print(df)
输出结果:
num1 num2 num3
0 2 8 14
1 4 10 16
2 6 12 18
在这个例子中,我们首先定义一个将输入参数乘以2的函数。接着,我们创建一个由整数组成的DataFrame。最后,我们使用applymap()
函数将mult_2()
函数应用于DataFrame中的每个元素。applymap()
函数返回一个新的DataFrame,其中每个元素都乘以2。
结论
在这篇文章中,我们深入学习了pandas库中的apply()
函数。我们讨论了它的语法和使用方法,并通过两个示例说明了如何使用apply()
函数计算每个学生的总成绩和对DataFrame中的每个元素应用函数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python pandas中apply函数简介以及用法详解 - Python技术站