python - 将数据帧作为类方法返回

标签 python class dataframe

我想在创建对象时创建作为数据框的报表对象。该代码旨在读取文件并作为实例化和调用加载方法的一部分进行一些过滤

class Report:
    def __init__(self,c = ['red','green','blue'],y = [2015,2016,2017,2018,2019]):
        self.color = c
        self.years = y

    def load(self):
        df = pd.read_excel(r"C:\Users\ger\Desktop\sample.xlsx",sheet_name='sht1')
        df = df.loc[(df['color'].isin(self.color) & 
                     df['year'].isin(self.years)),:]
        return df

# none of these below seems to work though
r1 = Report().load()

# or
r1 = Report()
r1 = r1.load()

预期结果将是具有颜色和年份字段的数据帧,如 init 中提到的或 Report() 调用中定义的。任何想法都非常感激

最佳答案

如果您的目标是将 load 作为实际的类方法,那么以下是适合您的情况的示例:

import pandas as pd

class Report:
    def __init__(self, c=['red', 'green', 'blue'], y=[2017, 2018, 2019]):
        self.color = c
        self.years = y

    @classmethod
    def load(cls, self):
        df = pd.DataFrame(
            {'color': ['red', 'blue', 'green', 'yellow', 'purple'],
             'year': [2015, 2016, 2017, 2018, 2019]}
        )
        df = df.loc[df['color'].isin(self.color) & df['year'].isin(self.years)]
        self.df = df

实际操作:

>>> report = Report()
>>> Report.load(report)
>>> print(report.df)
   color  year
2  green  2017

关于python - 将数据帧作为类方法返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55432644/

相关文章:

python - pygtk:确定键是修饰符

Python Flask 将访问日志写入 STDERR

java - 打印陷入无限循环的链表

css - 禁用事件链接上的 CSS 悬停效果

python - 对数据框中的一行条件进行外部处理

dataframe - julia 数据框更改一个单元格会更改整行

Python Pandas,运行总和,基于前一行值并分组

python - 如何编写包装预分配数据的扩展类型?

c++ - 正确包含基类和子类(派生类)的头文件?

python - 如何使用Python在Windows中设置代理?