On 2016-06-08 03:09, Paulo da Silva wrote:
Hi all!
What's wrong with this?
import pandas as pd
x=pd.to_datetime("20160501")
x+pd.DateOffset(days=1)
Timestamp('2016-05-02 00:00:00', tz=None)
x.__add__(pd.DateOffset(days=1))
NotImplemented
More generally I have a class derived from pandas.datetime and I want to
implement its own __add__ that at a given point call super __add__.
For example:
class C(pandas.datetime):
...
def __add__(self,n):
...
r=super(C,self).__add__(pd.DateOffset(days=n))
...
BTW, in the last line is it needed and how to "cast" self to
pandas.datetime?
Thanks for any help
When you have x+y, it tries x.__add__(y). If that fails, it then tries
y.__radd__(x).
Does that mean that the calculation above is actually implemented by the
DateOffset class?
Does pd.to_datetime return a datetime instance?
I suspect what's happening is that it's returning NotImplemented because
you're adding a DateOffset instance (from the pandas module) to a
datetime instance returned by pd.to_datetime (from the datetime module),
and the datetime class doesn't know about the DateOffset class. By
calling the dunder method directly, you're not giving Python the
opportunity to try the other dunder method.
--
https://mail.python.org/mailman/listinfo/python-list