BUG: Series ops with a rhs of a Timestamp raising exception (#2898) by jreback · Pull Request #2899 · pandas-dev/pandas (original) (raw)
In [149]: from datetime import datetime, timedelta
In [150]: s = Series(date_range('2012-1-1', periods=3, freq='D'))
In [151]: td = Series([ timedelta(days=i) for i in range(3) ])
In [152]: df = DataFrame(dict(A = s, B = td))
In [153]: df
Out[153]:
A B
0 2012-01-01 00:00:00 0:00:00
1 2012-01-02 00:00:00 1 day, 0:00:00
2 2012-01-03 00:00:00 2 days, 0:00:00
In [154]: df['C'] = df['A'] + df['B']
In [155]: df
Out[155]:
A B C
0 2012-01-01 00:00:00 0:00:00 2012-01-01 00:00:00
1 2012-01-02 00:00:00 1 day, 0:00:00 2012-01-03 00:00:00
2 2012-01-03 00:00:00 2 days, 0:00:00 2012-01-05 00:00:00
In [156]: df.dtypes
Out[156]:
A datetime64[ns]
B timedelta64[ns]
C datetime64[ns]
Dtype: object
In [60]: s - s.max()
Out[60]:
0 -2 days, 0:00:00
1 -1 day, 0:00:00
2 0:00:00
Dtype: timedelta64[ns]
In [61]: s - datetime(2011,1,1,3,5)
Out[61]:
0 364 days, 20:55:00
1 365 days, 20:55:00
2 366 days, 20:55:00
Dtype: timedelta64[ns]
In [62]: s + timedelta(minutes=5)
Out[62]:
0 2012-01-01 00:05:00
1 2012-01-02 00:05:00
2 2012-01-03 00:05:00
Dtype: datetime64[ns]
In [160]: y = s - s.shift()
In [161]: y
Out[161]:
0 NaT
1 1 day, 0:00:00
2 1 day, 0:00:00
Dtype: timedelta64[ns]
The can be set to NaT using np.nan analagously to datetimes
In [162]: y[1] = np.nan
In [163]: y
Out[163]:
0 NaT
1 NaT
2 1 day, 0:00:00
Dtype: timedelta64[ns]
# works on lhs too
In [64]: s.max() - s
Out[64]:
0 2 days, 0:00:00
1 1 day, 0:00:00
2 0:00:00
Dtype: timedelta64[ns]
In [65]: datetime(2011,1,1,3,5) - s
Out[65]:
0 -365 days, 3:05:00
1 -366 days, 3:05:00
2 -367 days, 3:05:00
Dtype: timedelta64[ns]
In [66]: timedelta(minutes=5) + s
Out[66]:
0 2012-01-01 00:05:00
1 2012-01-02 00:05:00
2 2012-01-03 00:05:00
Dtype: datetime64[ns]