【发布时间】:2021-11-02 19:23:19
【问题描述】:
我正在通过继承向pandas.DataFrame 添加一些功能:
import pandas as pd
class my_class(pd.DataFrame):
def __init__(self, *args):
super().__init__(*args)
def my_func(self):
print('New function!')
但我还是想使用pandas.read_csv 来加载数据框。我在这里检查过,似乎不鼓励将pandas.DataFrame 实例的__class__ 简单地更改为my_class。有一个更好的方法吗?谢谢!
对于上面引用的类,我可以使用pandas.DataFrame.__init__中的data参数将pandas.read_csv的结果传入,但是如果该参数不可用我该怎么办?
【问题讨论】:
-
顺便说一句,
super().__init__(*args)没有那么多余 -
read_csv是pd.read_csv所谓的模块方法,将classmethod/static 添加到您的自定义类中......或者我错过了smt? [链接不可点击]并且super().__init__(self, *args)中的self仍然是多余的 -
@cards 我正在尝试创建一个行为类似于
pd.read_csv但返回my_class的实例的函数,它是pd.DataFrame的子类。本质上是强制转换,但在 Python 中似乎不受欢迎(或者我可能错了)。 -
我个人会将函数作为 smt 独立于实例(这也是为什么它是模块函数而不是 DataFrame 的一部分),以便作为类/静态方法......甚至作为外部函数。尝试用您认为应该是的内容来编辑问题......(“表现得像”很模棱两可!)
标签: python pandas dataframe oop inheritance