Numeric Index constructors should validate dtype
parameter · Issue #29539 · pandas-dev/pandas (original) (raw)
The Int64Index
, UInt64Index
, and Float64Index
constructors do not validate the dtype
parameter and instead ignore it when it conflicts with the default dtype:
In [1]: import pandas as pd; pd.version Out[1]: '0.26.0.dev0+842.g78c3c1640'
In [2]: pd.Int64Index([1, 2, 3], dtype="float64") Out[2]: Int64Index([1, 2, 3], dtype='int64')
In [3]: pd.UInt64Index([1, 2, 3], dtype="categorical") Out[3]: UInt64Index([1, 2, 3], dtype='uint64')
In [4]: pd.Float64Index([1, 2, 3], dtype="datetime64") Out[4]: Float64Index([1.0, 2.0, 3.0], dtype='float64')
Other index types do not allow non-standard dtypes:
In [5]: pd.CategoricalIndex(list('abc'), dtype='timedelta64')
ValueError: Unknown dtype 'timedelta64'
In [6]: pd.DatetimeIndex(['2018-01-01'], dtype='int64')
ValueError: Unexpected value for 'dtype': 'int64'. Must be 'datetime64[ns]' or DatetimeTZDtype'.
In [7]: pd.IntervalIndex([pd.Interval(0, 1)], dtype=object)
TypeError: dtype must be an IntervalDtype, got object
In [8]: pd.RangeIndex(0, 3, dtype='float64')
TypeError: Invalid to pass a non-int64 dtype to RangeIndex
Expected Output
I'd expect In [2]
/In [3]
/In [4]
to raise a ValueError
.