dataframe类型数据的遍历

您所在的位置:网站首页 循环遍历dataframe dataframe类型数据的遍历

dataframe类型数据的遍历

2023-09-18 08:17| 来源: 网络整理| 查看: 265

cdddc0fecd0b687f94e41ffa5695d388.png

本文介绍一下关于 Pandas 中 apply() 函数的几个常见用法,apply() 函数的自由度较高,可以直接对 Series 或者 DataFrame 中元素进行逐元素遍历操作,方便且高效,具有类似于 Numpy 的特性。

apply() 使用时,通常放入一个 lambda 函数表达式、或一个函数作为操作运算,官方上给出的 apply() 用法:

DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwds func 代表的是传入的函数或 lambda 表达式;axis 参数可提供的有两个,该参数默认为0/列 0 或者 index ,表示函数处理的是每一列;1 或 columns ,表示处理的是每一行; raw ;bool 类型,默认为 False; False ,表示把每一行或列作为 Series 传入函数中;True,表示接受的是 ndarray 数据类型;

apply() 最后的是经过函数处理,数据以 Series 或 DataFrame 格式返回。

下面用几个例子来介绍一下 apply() 的具体使用;

DataFrame 使用apply()

1,计算每个元素的平方根

这里为了方便,直接用到 numpy 的 sqrt 函数;

>>> df =pd.DataFrame([[4,9]]*3,columns = ['A','B']) >>> df A B 0 4 9 1 4 9 2 4 9 ​ ​ >>> df.apply(np.sqrt) A B 0 2.0 3.0 1 2.0 3.0 2 2.0 3.0

2,计算每一行元素的平均值

这里传入数据是以列的形式存在的,所以 axis = 0,即可以省略;

>>> df.apply(np.mean) A 4.0 B 9.0

3,计算每一列元素的平均值

与 2 不同的是这里以行的行形式传入,要加一个参数 axis =1;

>>> df.apply(np.mean,axis = 1) 0 6.5 1 6.5 2 6.5 dtype: float64

4,添加新列C,其值分别为列A、B之和

实现这个功能,最简单的一行代码即可实现:

df['C'] = df.A +df.B

但这里要用 apply() 来实现,实现对列间操作的用法,操作步骤分为下面两步:

1,先定义一个函数实现 列A + 列B ;

2,利用apply() 添加该函数,且数据需要逐行加入,因此设置axis = 1

>>> def Add_a(x): ... return x.A+x.B ​ >>> df['C'] = df.apply(Add_a,axis=1) >>> df A B C 0 4 9 13 1 4 9 13 2 4 9 13 Series 使用apply()

Series 使用 apply() 函数与 DataFrame 相似,用法上最大区别就是加了一个列名 DataFram.类名

1,列 A 中所有元素加 1

不用 apply() 的方法

df.A =df.A +1

利用 apply() 函数进行操作,这里我传入一个 lambda 函数:

>>> df.A = df.A.apply(lambda x:x+1) >>> df A B C 0 5 9 13 1 5 9 13 2 5 9 13

2,判断列 A 中元素是否能够被2整除,用 Yes 或 No在旁边标注

>>> df.A = df.A.apply(lambda x:str(x)+"tYes" if x%2==0 else str(x)+"tNo") >>> df A B 0 5tNo 9 1 5tNo 9 2 5tNo 9

apply() 的大部分用法都是上面几点,区别是这里列的例子较简单一些,但对于基础用法理解上来说已经足够了。

以上就是本文的所有内容,最后感谢大家阅读!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3