pandas apply() 函数用法

apply()函数可以用在DataFrame和Series 数据结构中,

  1. 当用在Dataframe 结构中时,传入自定义函数的第一个参数是DataFram每一列
  2. 当用在Series 结构中时,传入自定义函数的第一个参数是Series中的每一个数据
  3. 当用在分组后的DataFrame中时,传入自定义函数的第一个参数是指定列的每一个分组
import pandas as pd
import numpy as np
data = pd.read_csv('joyful-pandas/data/Company_data.csv')
data.head()
证券代码日期收入类型收入额
012008/12/3111.084218e+10
112008/12/3121.259789e+10
212008/12/3131.451312e+10
312008/12/3141.063843e+09
412008/12/3158.513880e+08
# Datafram 应用data_frame,传入的数据是每一列数据,自定义函数被执行了三次
def fn_1(series):
    print(type(series))
    print(max(series))
    return max(series)

data.apply(fn_1)
<class 'pandas.core.series.Series'>
900957
<class 'pandas.core.series.Series'>
2016/12/31
<class 'pandas.core.series.Series'>
176
<class 'pandas.core.series.Series'>
2880310000000.0





证券代码             900957
日期           2016/12/31
收入类型                176
收入额     2880310000000.0
dtype: object
# series 使用apply()函数,传入自定义函数的第一个参数是每一个数字
def fn_2(x,y):
    return y + str(x)
data['收入类型'].apply(fn_2,args=("收入类型",))
0          收入类型1
1          收入类型2
2          收入类型3
3          收入类型4
4          收入类型5
           ...  
964017    收入类型12
964018    收入类型13
964019    收入类型14
964020    收入类型15
964021    收入类型16
Name: 收入类型, Length: 964022, dtype: object
# 应用在分组时,可以看出得到的结果是按照证券代码分组后,每组收入额的平均值。
data.groupby("证券代码")["收入额"].apply(lambda x:x.mean())
证券代码
1         1.706765e+10
2         3.651859e+10
4         3.332924e+07
5         5.009527e+07
6         1.506870e+09
              ...     
900950    1.420116e+09
900951    4.788945e+08
900953    1.766909e+09
900956    1.805563e+09
900957    5.946438e+07
Name: 收入额, Length: 3172, dtype: float64
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值