已解决pandas.apply函数使用方法

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





文章目录

  • 报错代码
  • 报错翻译
  • 报错原因
  • 解决方法
  • 帮忙解决





报错代码



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

在这里插入图片描述



报错信息如下所示

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



报错翻译



报错信息翻译如下


属性错误:“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,)

参数说明

  • 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))

运行结果:


在这里插入图片描述


帮忙解决

本文已收录于:《告别Bug专栏》,欢迎免费订阅

本专栏用于记录学习和工作中遇到的各种疑难编程Bug问题,以及粉丝群里小伙伴提出的各种问题,文章形式:报错代码 + 报错翻译 + 报错原因 + 解决方法,包括程序安装、运行程序过程中遇到的等等问题,博主心愿:让天下没有难学的编程,从此告别Bug!订阅专栏+关注博主后,私聊进全栈学习交流群帮忙可以帮忙解决问题,和小伙伴们交流学习,共同进步!!!


你可能感兴趣的:(《告别Bug》,pandas,python,数据分析)