重载运算符的最佳方法是比较属性

时间:2017-08-22 14:05:06

标签: python pandas properties operator-overloading

我想知道在比较类的属性时是否有一种方法可以在python3中重载一个运算符?我的属性是1-long panda.Series(是的,这看起来很愚蠢,但在处理大量对象时我需要它),我希望能够在不调用item()的情况下将这些属性与列表推导结合使用方法(用于API可读性)。

示例:

class Signal(object):

    @property
    def halftime(self):
        return pd.Series(whatever_with_len_eq_1)

什么有效:

signals = [Signal(a), Signal(b), Signal(c)]
best_signals = [sig for sig in signals if sig.halftime.item() > 25]

我想做什么:

signals = [Signal(a), Signal(b), Signal(c)]
best_signals = [sig for sig in signals if sig.halftime > 25]

然而,1-term系列和float / int的直接比较未经pandas授权。所以我想知道是否有一种方法可以超载属性比较(ex @halftime.__geq__,但是对SO的快速研究表明它不太可能);或者我应该去哪个方向:重载熊猫。系列比较方法?制作一个包装器(但我不能看到一个能够在比较时“转换”我的数据而不是直接调用时的数据?)

非常感谢你!

0 个答案:

没有答案