Code Sample, a copy-pastable example if possible
pd.Timedelta(1,unit='M')
Out[119]: Timedelta('30 days 10:29:06')
pd.Timedelta(2,unit='M')
Out[120]: Timedelta('60 days 20:58:12')
pd.Timedelta(1,unit='d')
Out[121]: Timedelta('1 days 00:00:00')
Problem description
only month has problem. day and week works #fine. pandas version 0.19 yield right result ,but 0.20+ goes wrong
Expected Output
Output of pd.show_versions()
Comment From: jorisvandenbossche
Can you show the output that you think is correct for pandas 0.19 ?
I get a consistent (but maybe wrong, that could be discussed) output for the latest releases:
In [52]: pd.__version__
Out[52]: '0.21.0.dev+19.g69a5d6f.dirty'
In [53]: pd.Timedelta(1, unit='M')
Out[53]: Timedelta('30 days 10:29:06')
In [2]: pd.__version__
Out[2]: '0.19.2'
In [3]: pd.Timedelta(1, unit='M')
Out[3]: Timedelta('30 days 10:29:06')
In [1]: pd.__version__
Out[1]: u'0.18.1'
In [2]: pd.Timedelta(1, unit='M')
Out[2]: Timedelta('30 days 10:29:06')
That said, I think we should actually disallow the M
unit, as this does not make sense. Timedelta
is made for fixed intervals (with a fixed length), not for relative / variable length periods (which a 'month' is, in constrast with eg a 'day')
Comment From: jreback
xref to #12691
this was for numpy compat. I agree, let's deprecate passing 'M', 'Y' on construction (see also the xref #12691 where they are passed as strings).
Comment From: jorisvandenbossche
@jreback opened an new issue for the deprecation (the top post is then cleaner)
@princelai Closing this issue, as I don't see a difference between 0.19.2 and 0.20.1. But if you actually see it, please post the full output of code and result in both versions.