python - 使用特定列对数据框进行子类化

标签 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 = MyClass(columns=['Class','Conditions'])

test.loc[2] = ['class2',[1, 2, 3]]

我收到错误:

File "C:\Miniconda3\lib\site-packages\pandas\core\indexing.py", line 189, in setitem self._setitem_with_indexer(indexer, value)

File "C:\Miniconda3\lib\site-packages\pandas\core\indexing.py", line 451, in _setitem_with_indexer self.obj._data = self.obj.append(value)._data

File "C:\Miniconda3\lib\site-packages\pandas\core\frame.py", line 6211, in append sort=sort)

File "C:\Miniconda3\lib\site-packages\pandas\core\reshape\concat.py", line 226, in concat return op.get_result()

File "C:\Miniconda3\lib\site-packages\pandas\core\reshape\concat.py", line 428, in get_result return (cons._from_axes(new_data, self.new_axes)

File "C:\Miniconda3\lib\site-packages\pandas\core\generic.py", line 356, in _from_axes return cls(data, **kwargs)

TypeError: init() takes 1 positional argument but 2 were given

我意识到,如果我不在 __init__ 中声明列并在创建类后分配它们,我就没有问题。

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

非常感谢。

最佳答案

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

>>> 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

关于python - 使用特定列对数据框进行子类化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53449246/

相关文章:

python - GitBash 中的错误 virtualenvwrapper

python - 仅针对特定列禁用 pandas read_csv 中的默认 na 解析

C++ 将整数节点按升序插入模板化单链表类 - 作业

swift - 您只能将计算变量与 setter 和 getter 一起使用来覆盖父类(super class)的存储属性

python - 从 np.fft 计算振幅

python - Boto AWS S3- "NoSuchKey",当 key 确实存在时

python - 如何使用时间作为带有seaborn的散点图的x轴?

python - spark 可以将数据框拆分为 topandas 的部分

python - df.first_valid_index() 返回一个引发 KeyError 的索引?

c++ - 错误 : variable '*' has initializer but incomplete type and one other