继承还是不继承?
关于Pandas子类化问题的最新消息是什么?(其他大多数线程都使用3-4年)。
我希望做类似…
import pandas as pd
class SomeData(pd.DataFrame):
# Methods
pass
ClsInstance = SomeData()
# Create a new column on ClsInstance?
这就是我的方法。我遵循了发现的建议:
以下示例仅显示了构造的新子类的用法pandas.DataFrame
。如果您按照我的第一个链接中的建议进行操作,则也可以考虑使用子类化pandas.Series
,以考虑获取pandas.DataFrame
子类的一维切片。
import pandas as pd
import numpy as np
class SomeData(pd.DataFrame):
# This class variable tells Pandas the name of the attributes
# that are to be ported over to derivative DataFrames. There
# is a method named `__finalize__` that grabs these attributes
# and assigns them to newly created `SomeData`
_metadata = ['my_attr']
@property
def _constructor(self):
"""This is the key to letting Pandas know how to keep
derivative `SomeData` the same type as yours. It should
be enough to return the name of the Class. However, in
some cases, `__finalize__` is not called and `my_attr` is
not carried over. We can fix that by constructing a callable
that makes sure to call `__finlaize__` every time."""
def _c(*args, **kwargs):
return SomeData(*args, **kwargs).__finalize__(self)
return _c
def __init__(self, *args, **kwargs):
# grab the keyword argument that is supposed to be my_attr
self.my_attr = kwargs.pop('my_attr', None)
super().__init__(*args, **kwargs)
def my_method(self, other):
return self * np.sign(self - other)
mydata = SomeData(dict(A=[1, 2, 3], B=[4, 5, 6]), my_attr='an attr')
print(mydata, type(mydata), mydata.my_attr, sep='\n' * 2)
A B
0 1 4
1 2 5
2 3 6
<class '__main__.SomeData'>
an attr
newdata = mydata.mul(2)
print(newdata, type(newdata), newdata.my_attr, sep='\n' * 2)
A B
0 2 8
1 4 10
2 6 12
<class '__main__.SomeData'>
an attr
newerdata = mydata.my_method(newdata)
print(newerdata, type(newerdata), newerdata.my_attr, sep='\n' * 2)
A B
0 -1 -4
1 -2 -5
2 -3 -6
<class '__main__.SomeData'>
an attr
这种方法很烂 pd.DataFrame.equals
newerdata.equals(newdata) # Should be `False`
TypeError Traceback (most recent call
last)
python-input-304-866170ab179e> in() python-input-304-866170ab179e>
----> 1 newerdata.equals(newdata)
~/anaconda3/envs/3.6.ml/lib/python3.6/site-
packages/pandas/core/generic.py in equals(self, other)
1034 the same location are considered equal.
1035 “”“
-> 1036 if not isinstance(other, self._constructor):
1037 return False
1038 return self._data.equals(other._data)TypeError: isinstance() arg 2 must be a type or tuple of types
发生的事情是该方法希望type
在_constructor
属性中找到类型的对象。相反,它找到了我可打电话的地方,以解决__finalize__
我遇到的问题。
解决
equals
在类定义中使用以下方法重写该方法。
def equals(self, other):
try:
pd.testing.assert_frame_equal(self, other)
return True
except AssertionError:
return False
newerdata.equals(newdata) # Should be `False`
False
问题内容: 我想采用一个现有的枚举,并向其添加更多元素,如下所示: 这在Java中可行吗? 问题答案: 不,你无法使用Java执行此操作。除了别的什么,d大概就是A(扩展的“正常”想法)的一个实例,但是只知道这一点的用户却一无所知-这违背了枚举作为一组众所周知的集合的观点。价值观。 如果你可以告诉我们更多有关如何使用它的信息,我们可能会建议其他解决方案。
Solr4提供了对索引中现有文档进行原子(部分)更新的功能。即。可以匹配文档ID并替换一个字段的内容,或者向多值字段添加更多条目:http://wiki.apache.org/solr/atomicupdates 原子更新可以从DataImportHandler(DIH)完成吗?
问题内容: 我在android / java中对Location的子类进行序列化遇到了麻烦 位置不可序列化。我有一个名为FALocation的第一个子类,它没有任何实例变量。我已经宣布它可序列化。 然后,我有一个名为Waypoint的第二个类,看起来像这样: 序列化工作正常。 反序列化会产生跟随翼异常(腿对象包含一个航路点): 问题答案: 序列化位置绝对必要吗?也许您可以将其标记为瞬态,并在反序列
我有一个问题与primeface数据表。我有一个数据与一些条目和一个列与一个按钮内。如果按钮被按下,一个弹出窗口打开与另一个数据表。第二个数据表中的条目取决于行中的按钮被按下。 Bean2 问题是弹出式数据表中没有列出任何条目,尽管在db查询之后的列表中有一些条目。 有没有办法修复这个bug?提前感谢! 更新1:
问题内容: 我有以下课程: 这可以按预期工作(使用字符串的单词而不是字母来初始化集合)。但是,当我想对set的不可变版本执行相同操作时,该方法似乎被忽略: 我可以达到类似的目的吗? 问题答案: 是的,您需要重写特殊方法: 输出为:
问题内容: 在上一个问题中,我问过有关更新菜单栏的问题。BalusC告诉我,我需要添加包含菜单栏的表单。 我想扩展这个问题,以询问是否可以更新标题中的文本。正在使用模板,我使用填写了值 模板有 在标题中定义表单似乎很奇怪,因此没有定义。我在viewBacking.current中放置了一个断点,以便可以看到它何时使用它。即使我单击刷新以重新显示该窗体,它也不会再次达到断点。只有当我转到内容不同的其