我想创建一个继承自 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)
我已经尝试过这个以及其他一些变体,但不断获得最大递归错误,我相信来自new和init的循环调用。
感谢您的帮助!
这应该可以修复你的代码:
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()