【Python 数据科学】apply函数基础

import pandas as pd 
position=pd.read_csv('DataAnalyst.csv',encoding='gbk')
company=pd.read_csv('company_sql.csv',encoding='gbk')
position.head()
citycompanyFullNamecompanyIdcompanyLabelListcompanyShortNamecompanySizebusinessZonesfirstTypesecondTypeeducationindustryFieldpositionIdpositionAdvantagepositionNamepositionLablesbottomtopavgworkYear
0上海纽海信息技术(上海)有限公司8581['技能培训', '节日礼物', '带薪年假', '岗位晋升']1号店2000人以上['张江']技术数据开发硕士移动互联网2537336知名平台数据分析师['分析师', '数据分析', '数据挖掘', '数据']798.0应届毕业生
1上海上海点荣金融信息服务有限责任公司23177['节日礼物', '带薪年假', '岗位晋升', '扁平管理']点融网500-2000人['五里桥', '打浦桥', '制造局路']技术数据开发本科金融2427485挑战机会,团队好,与大牛合作,工作环境好数据分析师-CR2017-SH2909['分析师', '数据分析', '数据挖掘', '数据']101512.5应届毕业生
2上海上海晶樵网络信息技术有限公司57561['技能培训', '绩效奖金', '岗位晋升', '管理规范']SPD50-150人['打浦桥']设计数据分析本科移动互联网2511252时间自由,领导nic数据分析师['分析师', '数据分析', '数据']465.0应届毕业生
3上海杭州数云信息技术有限公司上海分公司7502['绩效奖金', '股票期权', '五险一金', '通讯津贴']数云150-500人['龙华', '上海体育场', '万体馆']市场与销售数据分析本科企业服务,数据服务2427530五险一金 绩效奖金 带薪年假 节日福利大数据业务分析师【数云校招】['商业', '分析师', '大数据', '数据']687.0应届毕业生
4上海上海银基富力信息技术有限公司130876['年底双薪', '通讯津贴', '定期体检', '绩效奖金']银基富力15-50人['上海影城', '新华路', '虹桥']技术软件开发本科其他2245819在大牛下指导BI开发/数据分析师['分析师', '数据分析', '数据', 'BI']232.5应届毕业生
#astype转换变量值类型,但是没有进行赋值,并不能产生实际的改变
>>>position.avg.astype('str')
>>>position.avg.dtype
dtype('float64')
#可以直接将改变成字符串后的series进行字符串运算
position.avg.astype('str')+'k'
0        8.0k
1       12.5k
2        5.0k
3        7.0k
        ...  
6819    22.5k
6820    22.5k
6821    15.0k
6822    11.5k
Name: avg, Length: 6823, dtype: object
#使用匿名函数
#被应用的数组.apply(lambda 匿名函数)
position.avg.apply(lambda x:str(x)+'k')
0        8.0k
1       12.5k
2        5.0k
3        7.0k
        ...  
6818    15.0k
6819    22.5k
6820    22.5k
6821    15.0k
6822    11.5k
Name: avg, Length: 6823, dtype: object
##自定义函数
#传入series
def func(x):
    if x>20:return '20k+'
    else:return str(x)+'k'
#传入的position.avg就是一个series,没有横纵轴,因此不需要axis=1
>>>position.avg.apply(func)
##扶植改变原df    
#>>>position.avg=position.avg.apply(func)
#>>>position.head()  
#传入df,改变参数
def func(P):
    if P.avg>20:
        return '20k+'
    else:
        return str(P.avg)+'k'
#这里的P就是传入的position这df,axis=1指逐行应用  
>>>position.apply(func,axis=1)
#传入df,结合匿名函数
def func(x):
    if x>20:return '20k+'
    else:return str(x)+'k'
>>>position.apply(lambda x:func(x.avg),axis=1)

注意:实践过程中还会用到applymap()函数,可以使公式应用于所有元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值