亲宝软件园·资讯

展开

pandas Dataframe的apply方法

凯旋.Lau 人气:1

apply方法介绍

方法形式为 apply(func, axis=0, raw=False, result_type=None, agrs=(), **kwargs),沿Dataframe的轴应用func函数。

传递给函数的对象是Series对象,当axis=0时,其索引是Dataframe的索引;当axis=1时,其索引是Dataframe的列。

默认情况下,result_type=None,最终返回的类型是从func函数的返回推断出来的,否则它就取决于result_type参数。

参数解析:

返回:

用例1

导入包

import pandas as pd
import numpy as np
df = pd.DataFrame([[4, 9]]*3,  columns=['A', 'B'])
df

输出:

image-20220426172924956

使用numpy中的通用函数。

df.apply(np.sqrt)   # 相当于np.sqrt(df)

输出:

image-20220426172937375

用例2

在任一轴上应用函数, 返回由类似列表的结果组成的Series。

df.apply(np.sum, axis=0)

输出:

A    12
B    27
dtype: int64

df.apply(np.sum, axis=1)

输出:

0    13
1    13
2    13
dtype: int64

df.apply(lambda x :[1, 2], axis=1)

输出:

0    [1, 2]
1    [1, 2]
2    [1, 2]
dtype: object

用例3

传递result_type=expand,会将类似列表的结果扩展到Dataframe的列。

df.apply(lambda x : [1, 2], axis=1, result_type='expand')

输出:

image-20220426172853152

在func函数内部返回一个Series,和传递result_type=expand相似,Series的索引将作为扩展的列名。

df.apply(lambda x: pd.Series([1, 2], index=['foo', 'bar']), axis=1)

输出:

image-20220426172829809

传递result_type=broadcast,将会返回相同形状的结果,无论是列表还是标量,将沿轴进行广播,列的名称还是原始名称。

df.apply(lambda x: [1, 2], axis=1, result_type='broadcast')

输出:

image-20220426172808560

总结 

加载全部内容

相关教程
猜你喜欢
用户评论