Python 使用特定列对dataframe进行子类化

Python 使用特定列对dataframe进行子类化,python,pandas,class,dataframe,subclassing,Python,Pandas,Class,Dataframe,Subclassing,我正在尝试创建自己的Dataframe类。我想它有一些具体的列,当我调用它。所以我这样做: from pandas import DataFrame class MyClass(DataFrame): def __init__(self): super(MyClass, self).__init__(columns=['Class','Conditions']) 但是,当我尝试向其添加数据时 test = MyClass() #test = MyCla

我正在尝试创建自己的Dataframe类。我想它有一些具体的列,当我调用它。所以我这样做:

from pandas import DataFrame

class MyClass(DataFrame):  

    def __init__(self):    
        super(MyClass, self).__init__(columns=['Class','Conditions']) 
但是,当我尝试向其添加数据时

test = MyClass()
#test = MyClass(columns=['Class','Conditions'])

test.loc[2] = ['class2',[1, 2, 3]]
我得到一个错误:

文件“C:\Miniconda3\lib\site packages\pandas\core\index.py”,第行 189,在设置项中 self.\u setitem\u和索引器(索引器,值)

文件“C:\Miniconda3\lib\site packages\pandas\core\index.py”,第行 451,在带有索引器的设置项中 self.obj.\u数据=self.obj.append(值)。\u数据

文件“C:\Miniconda3\lib\site packages\pandas\core\frame.py”,第行 6211,在附件中 排序=排序)

文件 “C:\Miniconda3\lib\site packages\pandas\core\reformate\concat.py”,第行 226,康卡特 返回操作获取结果()

文件 “C:\Miniconda3\lib\site packages\pandas\core\reformate\concat.py”,第行 428,在get_结果中 返回(从_轴返回的cons._(新_数据,self.new_轴)

文件“C:\Miniconda3\lib\site packages\pandas\core\generic.py”,第行 356,从_轴到_轴 返回cls(数据,**kwargs)

TypeError:init()接受1个位置参数,但给出了2个

我意识到,如果我不在
\uuuu init\uuu
中声明列,并且在创建类之后分配它们,我就没有问题了

但是,我希望使用这些名称作为列来创建类


非常感谢。

如果要使用构造函数进行初始化,必须将参数传递给父级
\uuuuu init\uuuu

>>> class MyClass(DataFrame):                                                                                                                                              
        def __init__(self, *args, **kwargs):                                                                                                                                   
            kwargs['columns'] = ['Class', 'Conditions']                                                                                                                        
            super(MyClass, self).__init__(*args, **kwargs)                                                                                                                     

>>> md = MyClass({'Class': [1, 2, 3]})
>>> md
   Class Conditions
0      1        NaN
1      2        NaN
2      3        NaN

我不能复制。你能提供一个可以运行的东西来代替
条件('var2',op.ne,3)
?抱歉@jpp我的坏。你可以用一个列表来代替条件。比如[1,2,3]。我更新了这个示例。谢谢。关于它是否需要是
DataFrame
的子类-除非您要添加/重写方法等…看起来您可以只执行
MyDataFrame=functools.partial(DataFrame,columns=['Class','conditions'))
要修复调用的column参数并使用它?@GermánMartínez,您的代码在v0.19.2中对我来说运行良好。您使用的是什么版本?Hi@jpp代码运行正常,但我希望在构建对象时预定义列。注意: