BUG: maybe_infer_to_datetimelike incorrect on 2D inputs · Issue #23988 · pandas-dev/pandas (original) (raw)

Moved from discussion in #23730

>>> ts = pd.Timestamp.now().tz_localize('US/Pacific')
>>> data = np.array([[ts, ts, ts], [ts, ts, ts]])
>>> pd.DataFrame(data)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pandas/core/frame.py", line 416, in __init__
    copy=copy)
  File "pandas/core/frame.py", line 574, in _init_ndarray
    return create_block_manager_from_blocks([values], [columns, index])
  File "pandas/core/internals/managers.py", line 1665, in create_block_manager_from_blocks
    mgr = BlockManager(blocks, axes)
  File "pandas/core/internals/managers.py", line 118, in __init__
    self=self.ndim))
AssertionError: Number of Block dimensions (1) must equal number of axes (2)

This is because maybe_infer_to_datetimelike returns a DatetimeIndex (and not something 2D)

>>> from pandas.core.frame import maybe_infer_to_datetimelike
>>> maybe_infer_to_datetimelike(data)
DatetimeIndex(['2018-11-28 16:07:44.050944-08:00',
               '2018-11-28 16:07:44.050944-08:00',
               '2018-11-28 16:07:44.050944-08:00',
               '2018-11-28 16:07:44.050944-08:00',
               '2018-11-28 16:07:44.050944-08:00',
               '2018-11-28 16:07:44.050944-08:00'],
              dtype='datetime64[ns, US/Pacific]', freq=None)

cc @h-vetinari since you're already on a roll in this neighborhood