首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError:'DataFrame‘对象没有属性’操作‘

AttributeError:'DataFrame‘对象没有属性’操作‘
EN

Stack Overflow用户
提问于 2022-02-06 19:46:32
回答 2查看 787关注 0票数 0

我试图编写一个函数,返回数据集的平均值、中值、标准差、最大值和最小值。

下面是我的代码:它应该遍历“op”数组中的每个项,并将它们传递到"statSummary“函数中。

该函数将列表作为操作类型(例如平均值/中位数),执行操作(计算平均值)并打印结果。

代码语言:javascript
复制
def statSummary(dataset,operation):
    operation = []
    operation.append(df[dataset].operation())

    return print(operation)

#load dataset 
df = pd.read_csv('dataset.csv')

columnNames = list(df.columns)

ops = ["mean","median","std","max","min"]

for i in ops:
    statSummary(columnNames,i)

但是,当试图运行此程序时,我会收到以下错误:

代码语言:javascript
复制
AttributeError                            Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_8416/4291564190.py in <module>
     30 
     31 for i in ops:
---> 32     statSummary(columnNames,i)
     33 
     34 

~\AppData\Local\Temp/ipykernel_8416/4291564190.py in statSummary(dataset, operation)
     18 def statSummary(dataset,operation):
     19     operation = []
---> 20     operation.append(df[dataset].operation())
     21 
     22     return print(operation)

~\anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   5485         ):
   5486             return self[name]
-> 5487         return object.__getattribute__(self, name)
   5488 
   5489     def __setattr__(self, name: str, value) -> None:

AttributeError: 'DataFrame' object has no attribute 'operation'

这个错误似乎是由于这行中的“.operation()”造成的。

代码语言:javascript
复制
operation.append(df[dataset].operation())

我想‘插入’操作变量到这一行,以便我可以迭代我的‘操作’列表使用‘平均数’,‘中位数’,std‘等。

这个是可能的吗?

EN

回答 2

Stack Overflow用户

发布于 2022-02-06 19:51:44

你在找getattr

代码语言:javascript
复制
def statSummary(dataset, operation):
    func = getattr(df[dataset], operation)
    return func()  # if `operation` is `"sum"`, this is equivalent to `df[dataset].sum()`.
票数 1
EN

Stack Overflow用户

发布于 2022-02-06 20:09:42

如果您只想打印出这些内容,只需使用df.describe()即可。也可以使用numpy应用筛选方法。我给出了这方面的示例。否则,您可以使用getattr作为@AKX的回答。

代码语言:javascript
复制
import pandas as pd 
import numpy as np


df = pd.DataFrame({
    'one':np.array([1,2,3,4,5]),
    'two':np.array([2,4,6,8,10]),
})

def statSummary(dataset,ops):
    operation = []
    operation.append(df[dataset].apply(ops))
    return print(operation)

columnNames = list(df.columns)

ops = [np.mean,np.median,np.std,np.max,np.min]

for i in ops:
    statSummary(columnNames,i)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71011031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档