Python 使用特定列对dataframe进行子类化
我正在尝试创建自己的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
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代码运行正常,但我希望在构建对象时预定义列。注意: