BUG: Series(..) coerces datetime64[non-ns] array differently depending on writable flag · Issue #34843 · pandas-dev/pandas (original) (raw)

Normally, if we create a Series or DataFrame from a numpy array of non-ns datetime64, and the values are within the ns-range, we convert to datetime64[ns] (in sanitize_array).

However, this does not seem to happen if the array is not writeable:

In [9]: arr = np.array(['2020-01-01T00:00:00.000000'], dtype="datetime64[us]") 

In [10]: pd.Series(arr) 
Out[10]: 
0   2020-01-01
dtype: datetime64[ns]

In [11]: arr.flags.writeable = False  

In [12]: pd.Series(arr)  
Out[12]: 
0    2020-01-01 00:00:00
dtype: object

I suppose this is a bug? (@jbrockmendel ?)

It seems this is due to tslibs.conversion.ensure_datetime64ns failing on a read-only buffer, and it started "failing" since pands 0.25