如何继承pandas dataframe类并使用文件路径实例化

问题描述 投票:0回答:1

我想创建一个继承自 pandas 数据框的类。我想使用 csv 文件路径实例化该对象,但不断出现错误。我找到了这篇文章:Use read_csv from pandas to create an instance of a child class of pandas.DataFrame in Python,这非常相似,但需要先读取csv,然后将对象包裹在它周围,但是,我想本质上是在一行中完成,更像是以下内容:

class my_class(pd.DataFrame):
    def __new__(cls, *args, **kwargs):
        return super().__new__(cls)
        
    def __init__(self, save_path):
        self.save_path = save_path
        self.__new__(pd.read_csv(save_path))

    def my_func(self):
        print('New function!')

save_path = 'test_my_class.csv'

pd.DataFrame({'test_col': [1,2,3]}).to_csv(save_path)

mc = my_class(save_path)

我已经尝试过这个以及其他一些变体,但不断获得最大递归错误,我相信来自newinit的循环调用。

感谢您的帮助!

python pandas oop inheritance
1个回答
0
投票

这应该可以修复你的代码:

import pandas as pd

save_path = 'test.csv'
pd.DataFrame({'test_col': [1,2,3]}).to_csv(save_path)

class my_class(pd.DataFrame):
    def __new__(cls, *args, **kwargs):
        return super().__new__(cls)
        
    def __init__(self, save_path):
        super().__init__(pd.read_csv(save_path))
        self.save_path = save_path
        
    def my_func(self):
        print('New function!')

mc = my_class(save_path)

mc.head()
© www.soinside.com 2019 - 2024. All rights reserved.