Before pandas 2.0 every datetime was stored as datetime64 with nanosecond resolution, which capped the representable range at roughly 1677 to 2262. pandas 2.0 (April 2023) added second, millisecond and microsecond resolutions, so dates outside that window finally work.
The consequence is that dtype is no longer guaranteed to be datetime64[ns]. pd.to_datetime and read_csv can produce datetime64[s] or datetime64[us] depending on the input, and code that compares df[col].dtype == "datetime64[ns]" or constructs a NumPy array assuming nanoseconds breaks.
Check resolution with Timestamp.unit on a scalar or by printing the dtype. Convert explicitly with Series.dt.as_unit("ns") when downstream code needs a fixed resolution, or astype("datetime64[us]") when you want the wider range. Arithmetic between two different resolutions is allowed and promotes to the finer of the two. Parquet round-trips preserve the unit, so a file written by pandas 2 can surprise a reader that assumed nanoseconds.