当前位置:   article > 正文

已解决AttributeError: ‘str‘ object has no attribute ‘apply‘_attributeerror: 'str' object has no attribute 'app

attributeerror: 'str' object has no attribute 'apply

已解决(pandas apply函数使用报错)AttributeError: ‘str‘ object has no attribute ‘apply‘









报错代码



粉丝群一个小伙伴想使用pandas apply函数使用,但是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错代码如下:

在这里插入图片描述



报错信息如下所示

AttributeError: 'str' object has no attribute 'apply'
  • 1



报错翻译



报错信息翻译如下


属性错误:“str”对象没有属性“apply”





报错原因



apply函数时pandas的一个函数,必须是DataFrame对象才能调用,字符串中并没有这个函数。

apply(func [, args [, kwargs ]]) 函数用于当函数参数已经存在于一个元组或字典中时,间接地调用函数。args是一个包含将要提供给函数的按位置传递的参数的元组。如果省略了args,任何参数都不会被传递,kwargs是一个包含关键字参数的字典。

apply()的返回值就是func()的返回值,apply()的元素参数是有序的,元素的顺序必须和func()形式参数的顺序一致

小伙伴按下面的方法正确使用apply函数即可!!!





解决方法



apply函数的正确使用

apply()可以对DataFrame按行和列(默认按列)进行函数处理,也支持Series。如果是Series,将逐个传入具体值。使用lambda时,变量是调用对象低一维的值。

语法格式:

DataFrame.apply(func: AggFuncType,axis: Axis = 0,raw: bool = False,result_type=None,args=(),**kwargs,)
  • 1

参数说明

  • func:自己编写要应用于Series/DataFrame的函数,*args, **kwargs被传递到“func”中

  • Axis :应用功能的轴,0 将函数应用于每列,1将函数应用于每一行,默认为0。

  • raw:bool,默认为False。确定行或列是否作为Series或ndarray对象传递:

    • False:将每行或每列作为序列传递给作用

    • True:传递的函数将接收ndarray对象

    • 相反,如果您只是应用NumPy缩减函数,这将实现更好的性能。

  • result_type:‘expand’,‘reduce’,‘broadcast’,None},默认为None。这些仅在“轴=1”(列)时起作用:

    • expand:类似列表的结果将变成列。

    • reduce:如果可能,返回一个序列,而不是展开列表式结果。这与“展开”相反。

    • broadcast:结果将广播到原始形状在DataFrame中,原始索引和列将是保留。

    • 默认行为(None)取决于应用的函数:类似列表的结果将作为序列返回其中之一。但是,如果apply函数返回Series展开为列。

  • args:迭代的参数,可选,可以是元组类型,也可以是列表类型或者其他。

  • kwargs:映射的参数,可选,是一个包含关键字的字典。

可以与lambda结合使用:

import numpy as np
import pandas as pd

data = {'A': pd.Series(1, index=list(range(4)), dtype='float32'),
        'B': pd.Series(2, index=list(range(4)), dtype='float32'),
        'C': pd.Series(3, index=list(range(4)), dtype='float32')
        }
df = pd.DataFrame(data)

print("应用前:")
print(df)

print("对列进行求和:")
print(df.apply(lambda x: x.sum(), axis=0))
print("对行进行求和:")
print(df.apply(lambda x: x.sum(), axis=1))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

运行结果:


在这里插入图片描述


以上是此问题报错原因的解决方法,欢迎评论区留言讨论是否能解决,如果有用欢迎点赞收藏文章谢谢支持,博主才有动力持续记录遇到的问题!!!

千人全栈VIP答疑群联系博主帮忙解决报错

由于博主时间精力有限,每天私信人数太多,没办法每个粉丝都及时回复,所以优先回复VIP粉丝,可以通过订阅限时9.9付费专栏《100天精通Python从入门到就业》进入千人全栈VIP答疑群,获得优先解答机会(代码指导、远程服务),白嫖80G学习资料大礼包,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会),此专栏文章是专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试!

  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等

  • 注意:如果希望得到及时回复,和大佬们交流学习,订阅专栏后私信博主进千人VIP答疑群在这里插入图片描述
    在这里插入图片描述

免费资料获取,更多粉丝福利,关注下方公众号获取

在这里插入图片描述

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/948344
推荐阅读
相关标签
  

闽ICP备14008679号