You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In most cases, parsing strings to datetimes (with any of :func:`to_datetime`, :class:`DatetimeIndex`, or :class:`Timestamp`) will produce objects with microsecond ("us") unit. The exception to this rule is if your strings have nanosecond precision, in which case the result will have "ns" unit:
Previously, :func:`to_datetime` and :class:`DatetimeIndex` would always parse strings to "ns" unit. During pandas 2.x, :class:`Timestamp` could give any of "s", "ms", "us", or "ns" depending on the specificity of the input string.
256
+
244
257
.. _timeseries.converting.format:
245
258
246
259
Providing a format argument
@@ -379,6 +392,16 @@ We subtract the epoch (midnight at January 1, 1970 UTC) and then floor divide by
Another common way to perform this conversion is to convert directly to an integer dtype. Note that the exact integers this produces will depend on the specific unit
Copy file name to clipboardExpand all lines: doc/source/whatsnew/v3.0.0.rst
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -358,7 +358,7 @@ When passing strings, the resolution will depend on the precision of the string,
358
358
In [5]: pd.to_datetime(["2024-03-22 11:43:01.002003004"]).dtype
359
359
Out[5]: dtype('<M8[ns]')
360
360
361
-
The inferred resolution now matches that of the input strings:
361
+
The inferred resolution now matches that of the input strings for nanosecond-precision strings, otherwise defaulting to microseconds:
362
362
363
363
.. ipython:: python
364
364
@@ -367,13 +367,17 @@ The inferred resolution now matches that of the input strings:
367
367
In [4]: pd.to_datetime(["2024-03-22 11:43:01.002003"]).dtype
368
368
In [5]: pd.to_datetime(["2024-03-22 11:43:01.002003004"]).dtype
369
369
370
+
This is also a change for the :class:`Timestamp` constructor with a string input, which in version 2.x.y could give second or millisecond unit, which users generally disliked (:issue:`52653`)
371
+
370
372
In cases with mixed-resolution inputs, the highest resolution is used:
371
373
372
374
.. code-block:: ipython
373
375
374
376
In [2]: pd.to_datetime([pd.Timestamp("2024-03-22 11:43:01"), "2024-03-22 11:43:01.002"]).dtype
375
377
Out[2]: dtype('<M8[ns]')
376
378
379
+
.. warning:: Many users will now get "M8[us]" dtype data in cases when they used to get "M8[ns]". For most use cases they should not notice a difference. One big exception is converting to integers, which will give integers 1000x smaller.
0 commit comments