Code Sample, a copy-pastable example if possible
In [147]: pandas.Timestamp('4 pm')
---------------------------------------------------------------------------
OutOfBoundsDatetime Traceback (most recent call last)
<ipython-input-147-333a3814fcab> in <module>()
----> 1 pandas.Timestamp('4 pm')
pandas/tslib.pyx in pandas.tslib.Timestamp.__new__ (pandas/tslib.c:10447)()
pandas/tslib.pyx in pandas.tslib.convert_to_tsobject (pandas/tslib.c:27555)()
pandas/tslib.pyx in pandas.tslib.convert_str_to_tsobject (pandas/tslib.c:29955)()
pandas/tslib.pyx in pandas.tslib.convert_to_tsobject (pandas/tslib.c:28700)()
pandas/tslib.pyx in pandas.tslib._check_dts_bounds (pandas/tslib.c:32835)()
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 16:00:00
Problem description
this type of string conversion doesn't work with 0.19.2 since upgrade from 0.16.0 traced the problem using git bisect to this commit: c2ea0d4d1f7333dfb5f35d0795267d8894a37d83
Expected Output
In [3]: pandas.Timestamp('4 pm') Out[3]: Timestamp('2017-04-20 16:00:00')
Output of pd.show_versions()
Comment From: jreback
so the error message is obviously wrong, but what should this actually do? Sure you can return today's date, but generally this indicates an error (and is certainly not explicitly reproducible). I would much rather people be explicit about this.
Comment From: jorisvandenbossche
So the PR on github I linked to seems to be the correct one. As I said there, the PR's intent was to parse something like Timestamp('2012')
no longer by filling with current month and day of the month, but setting it to 2012-01-01 (and to make this consistent over the different the different parsing functions we have in pandas).
So that change was certainly intentional. The change that, when only supplying a time part, the date part is no longer filled with the current date, but with 0001-01-01, is possibly a side-effect we maybe didn't fully catch then.
Comment From: jorisvandenbossche
OK, it is not that clear actually, as other time-only string do work:
In [16]: pd.Timestamp("16:15")
Out[16]: Timestamp('2017-04-21 16:15:00')
In [17]: pd.to_datetime("16:15")
Out[17]: Timestamp('2017-04-21 16:15:00')
But, this is a duplicate of https://github.com/pandas-dev/pandas/issues/11430, so let's move the discussion over there.