A default dtype of DataFrame index is int64
and I would like to change it to int32
.
I tried changing it with pd.DataFrame.set_index
and NumPy array of int32
, also tried making new index with dtype=np.int32
. It didn't work, always returning index of int64
.
Can someone show a working code to produce Pandas index with int32
size?
I use conda Pandas v0.20.1.
@PietroBattiston's answer may work. But it's worth explaining why you should ordinarily not want to replace the default
RangeIndex
with anInt64
/Int32
index.Storing the logic behind a range of values takes less memory than storing each integer in a range. This should be clear when you compare, for instance, Python's built-in
range
with NumPynp.arange
. As described in thepd.RangeIndex
docs:Not sure this is something worth doing in practice, but the following should work:
(from here)
All of the code paths I could find, coerce the dtype:
Check in
pandas.Index.__new__()
This allows passing a dtype, but in
NumericIndex().__new__()
we have:Which changes the dtype.