A pandas TimedeltaIndex
has an attribute days
that can be used for operations with other normal dtypes (float64
, etc):
import pandas as pd
from pandas.tseries import offsets
idx1 = pd.date_range('2017-01', periods=10)
idx2 = idx1 + offsets.MonthEnd(1)
tds = idx2 - idx1
print(tds.days - 2)
Int64Index([28, 27, 26, 25, 24, 23, 22, 21, 20, 19], dtype='int64')
But when tds
is converted to a Series (explicitly, or as a DataFrame column), it loses this attribute.
print(pd.Series(tds).days)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-115-cb20b4d368f4> in <module>()
----> 1 print(pd.Series(tds).days)
C:\Users\bsolomon\Anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
3079 if name in self._info_axis:
3080 return self[name]
-> 3081 return object.__getattribute__(self, name)
3082
3083 def __setattr__(self, name, value):
AttributeError: 'Series' object has no attribute 'days'
And accessing .days
requires converting back over to an Index
:
print(pd.Index(pd.Series(tds)).days)
Int64Index([30, 29, 28, 27, 26, 25, 24, 23, 22, 21], dtype='int64')
Is there a more straightforward way to access this attribute than with the conversion above?
Use .dt
accessor:
print(pd.Series(tds).dt.days)
Output:
0 30
1 29
2 28
3 27
4 26
5 25
6 24
7 23
8 22
9 21
dtype: int64
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With