Pandas DataFrame apply()示例
Pandas DataFrame apply()函数用于沿DataFrame的轴应用函数。
函数语法为:
def apply( self, func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds )
重要参数是:
func:应用于DataFrame的每一行或者每一列的函数。
axis:沿其应用功能的轴。
可能的值为{0或者'index',1或者'columns'},默认值为0。args:传递给函数的位置参数。
当我们必须将其他参数传递给函数时,这很有用。kwargs:传递给函数的其他关键字参数。
当我们必须将其他关键字参数传递给函数时,这将很有帮助。
Pandas DataFrame apply()示例
我们来看一些在DataFrame对象上使用apply()函数的示例。
1.将函数应用于DataFrame元素
import pandas as pd df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]}) def square(x): return x * x df1 = df.apply(square) print(df) print(df1)
输出:
A B 0 1 10 1 2 20 A B 0 1 100 1 4 400
调用apply()函数的DataFrame保持不变。
apply()函数将函数应用于其元素后,将返回一个新的DataFrame对象。
2.与lambda一起套用
如果您看上面的示例,我们的square()函数非常简单。
我们可以轻松地将其转换为lambda函数。
我们可以在调用apply()函数的同时创建一个lambda函数。
df1 = df.apply(lambda x: x * x)
输出将与上一个示例相同。
3.沿轴套用
我们可以沿轴应用一个函数。
但是,在最后一个示例中,没有使用轴。
该功能将应用于DataFrame的所有元素。
当我们在DataFrame的行或者列上调用聚合函数时,可以清楚地使用轴。
假设我们要获取沿列或者索引的元素总数。
根据axis参数的值,输出将有所不同。
import pandas as pd import numpy as np df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]}) df1 = df.apply(np.sum, axis=0) print(df1) df1 = df.apply(np.sum, axis=1) print(df1)
输出:
A 3 B 30 dtype: int64 0 11 1 22 dtype: int64
在第一个示例中,计算沿列的元素总数。
而在第二个示例中,计算沿行的元素之和。
4. DataFrame apply()与参数
假设我们要应用一个接受多个参数的函数。
在这种情况下,我们可以使用" args"参数传递其他参数。
import pandas as pd def sum(x, y, z): return x + y + z df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]}) df1 = df.apply(sum, args=(1, 2)) print(df1)
输出:
A B 0 4 13 1 5 23
5.带有位置和关键字参数的DataFrame apply()
让我们看一个示例,在该示例中,我们将同时使用" args"和" kwargs"参数来将位置参数和关键字参数传递给函数。
import pandas as pd def sum(x, y, z, m): return (x + y + z) * m df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]}) df1 = df.apply(sum, args=(1, 2), m=10) print(df1)
输出:
A B 0 40 130 1 50 230
DataFrame applymap()函数
如果要按元素应用函数,则可以使用applymap()函数。
此函数没有其他参数。
该函数应用于每个元素,并且返回值用于创建结果DataFrame对象。
import pandas as pd import math df = pd.DataFrame({'A': [1, 4], 'B': [100, 400]}) df1 = df.applymap(math.sqrt) print(df) print(df1)
输出:
A B 0 1 100 1 4 400 A B 0 1.0 10.0 1 2.0 20.0
让我们看另一个示例,我们将使用applymap()函数将所有元素值转换为大写。
import pandas as pd df = pd.DataFrame({'Name': ['hyman', 'Meghna'], 'Role': ['ceo', 'cto']}) df1 = df.applymap(str.upper) print(df) print(df1)
输出:
Name Role 0 hyman ceo 1 Meghna cto Name Role 0 hyman CEO 1 MEGHNA CTO