API: Index([NaT, None]) match Series([NaT, None])
State: closed

- [x] closes #49340 (Replace xxxx with the GitHub issue number)
- [x] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [x] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [x] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [x] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.


Labels:
name: Missing-data
description: np.nan, pd.NaT, pd.NA, dropna, isnull, interpolate
name: Index
description: Related to the Index class or subclasses
name: Constructors
description: Series/DataFrame/Index/pd.array Constructors

Comments:
Thanks @jbrockmendel 
It looks like that this caused a slowdown in explode:


```
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.006    0.006 {built-in method builtins.exec}
        1    0.000    0.000    0.006    0.006 <string>:1(<module>)
        1    0.000    0.000    0.006    0.006 series.py:4122(explode)
        1    0.000    0.000    0.005    0.005 series.py:342(__init__)
        1    0.000    0.000    0.005    0.005 construction.py:497(sanitize_array)
        1    0.000    0.000    0.005    0.005 cast.py:1104(maybe_infer_to_datetimelike)
        1    0.005    0.005    0.005    0.005 {pandas._libs.lib.maybe_convert_objects}
        1    0.001    0.001    0.001    0.001 {pandas._libs.reshape.explode}
        1    0.000    0.000    0.000    0.000 base.py:1137(repeat)
        1    0.000    0.000    0.000    0.000 {method 'repeat' of 'numpy.ndarray' objects}
        1    0.000    0.000    0.000    0.000 _methods.py:46(_sum)
        1    0.000    0.000    0.000    0.000 {method 'reduce' of 'numpy.ufunc' objects}
```

https://asv-runner.github.io/asv-collection/pandas/#reshape.Explode.time_explode?p-n_rows=10000&p-max_list_length=10
any idea what that profile output looks like before this?
No, but can have a look tomorrow
This is how it looks before:

```
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.001    0.001 {built-in method builtins.exec}
        1    0.000    0.000    0.001    0.001 <string>:1(<module>)
        1    0.000    0.000    0.001    0.001 series.py:4169(explode)
        1    0.001    0.001    0.001    0.001 {pandas._libs.reshape.explode}
        1    0.000    0.000    0.000    0.000 series.py:344(__init__)
        1    0.000    0.000    0.000    0.000 base.py:1176(repeat)
        1    0.000    0.000    0.000    0.000 construction.py:497(sanitize_array)
        1    0.000    0.000    0.000    0.000 managers.py:1909(from_array)
        1    0.000    0.000    0.000    0.000 {method 'repeat' of 'numpy.ndarray' objects}
        1    0.000    0.000    0.000    0.000 _methods.py:46(_sum)
        1    0.000    0.000    0.000    0.000 {method 'reduce' of 'numpy.ufunc' objects}
        1    0.000    0.000    0.000    0.000 function.py:59(__call__)
        2    0.000    0.000    0.000    0.000 config.py:262(__call__)
        1    0.000    0.000    0.000    0.000 common.py:157(is_object_dtype)
        2    0.000    0.000    0.000    0.000 config.py:134(_get_option)
    24/17    0.000    0.000    0.000    0.000 {built-in method builtins.len}
        1    0.000    0.000    0.000    0.000 _validators.py:168(validate_args_and_kwargs)
        1    0.000    0.000    0.000    0.000 common.py:1486(_is_dtype_type)
       34    0.000    0.000    0.000    0.000 {built-in method builtins.isinstance}
```

and this is after the commit from this pr:

```
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.006    0.006 {built-in method builtins.exec}
        1    0.000    0.000    0.006    0.006 <string>:1(<module>)
        1    0.000    0.000    0.006    0.006 series.py:4169(explode)
        1    0.000    0.000    0.005    0.005 series.py:344(__init__)
        1    0.000    0.000    0.005    0.005 construction.py:497(sanitize_array)
        1    0.000    0.000    0.005    0.005 construction.py:755(_try_cast)
        1    0.000    0.000    0.005    0.005 cast.py:1174(maybe_infer_to_datetimelike)
        1    0.005    0.005    0.005    0.005 {pandas._libs.lib.maybe_convert_objects}
        1    0.001    0.001    0.001    0.001 {pandas._libs.reshape.explode}
        1    0.000    0.000    0.000    0.000 base.py:1176(repeat)
        1    0.000    0.000    0.000    0.000 _methods.py:46(_sum)
        1    0.000    0.000    0.000    0.000 {method 'reduce' of 'numpy.ufunc' objects}
        1    0.000    0.000    0.000    0.000 managers.py:1909(from_array)
        1    0.000    0.000    0.000    0.000 function.py:59(__call__)
        1    0.000    0.000    0.000    0.000 _validators.py:168(validate_args_and_kwargs)
        1    0.000    0.000    0.000    0.000 {method 'repeat' of 'numpy.ndarray' objects}
        1    0.000    0.000    0.000    0.000 common.py:157(is_object_dtype)
        1    0.000    0.000    0.000    0.000 numeric.py:289(full)
        1    0.000    0.000    0.000    0.000 base.py:4885(_values)
        2    0.000    0.000    0.000    0.000 config.py:262(__call__)
        1    0.000    0.000    0.000    0.000 common.py:1486(_is_dtype_type)
       34    0.000    0.000    0.000    0.000 {built-in method builtins.isinstance}
        2    0.000    0.000    0.000    0.000 config.py:134(_get_option)
        1    0.000    0.000    0.000    0.000 range.py:192(_data)
    24/17    0.000    0.000    0.000    0.000 {built-in method builtins.len}
```
so looks like it is all in maybe_convert_objects.  could add a convert_numeric=False flag to allow some short-circuiting in there