首页 > 解决方案 > 类“property”没有定义“__getitem__”,因此不能在其实例上使用“[]”运算符

问题描述

我在名为“df”的熊猫数据框上使用 iloc 函数。这是我的代码:

import pandas as pd

class test:
    df = pd.DataFrame
    def __init__(self):
       self.df = pd.dataframe()

    def read_csv(self):
       self.df = pd.read_csv(filename.csv)

    def operation(self, num):
       output_details = self.df.iloc[num]
       return output_deatils

但是,我的 IDE 收到此警告:

“property”类未定义“ getitem ”,因此不能在其实例上使用“[]”运算符

我不知道出了什么问题。我正在使用 iloc 获取 Pandas 数据框中“num”行的所有值。我认为 output_details 实际上不是带有逗号分隔值的列表,而是熊猫数据类型。我该怎么做(或将其转换为列表)?

标签: pythonpandascsvdataframe

解决方案


它仍然不是最小的、完整的、可验证的示例(MCVE)。以后,请确保您可以执行您的示例,然后将其复制粘贴到问题中;它避免了这类问题。但如果我不得不猜测...

df = pd.DataFrame不会将 DataFrame 的实例放入df,而是放入一个DataFrame 。该类具有iloc属性,这是实例管理的方式df.iloc[...];但是类中的属性对象不能那样使用。

这是您的问题的 MCVE:

df = pd.DataFrame
df.iloc[0]

这是 的正确用法DataFrame

df = pd.DataFrame([[0]])
df.iloc[0]

显然,这也可以解决它:

self.df = pd.read_csv("filename.csv")
df.iloc[0]

推荐阅读