File tree Expand file tree Collapse file tree 2 files changed +8
-3
lines changed Expand file tree Collapse file tree 2 files changed +8
-3
lines changed Original file line number Diff line number Diff line change @@ -4249,6 +4249,7 @@ def set_index(
4249
4249
"one-dimensional arrays."
4250
4250
)
4251
4251
4252
+ current_dtype = None
4252
4253
missing : List [Optional [Hashable ]] = []
4253
4254
for col in keys :
4254
4255
if isinstance (
@@ -4262,6 +4263,9 @@ def set_index(
4262
4263
# everything else gets tried as a key; see GH 24969
4263
4264
try :
4264
4265
found = col in self .columns
4266
+ if found :
4267
+ # get current dtype to preserve through index creation
4268
+ current_dtype = self .dtypes .get (col ).type
4265
4269
except TypeError :
4266
4270
raise TypeError (f"{ err_msg } . Received column of type { type (col )} " )
4267
4271
else :
@@ -4317,7 +4321,7 @@ def set_index(
4317
4321
f"received array of length { len (arrays [- 1 ])} "
4318
4322
)
4319
4323
4320
- index = ensure_index_from_sequences (arrays , names )
4324
+ index = ensure_index_from_sequences (arrays , names , current_dtype )
4321
4325
4322
4326
if verify_integrity and not index .is_unique :
4323
4327
duplicates = index [index .duplicated ()].unique ()
Original file line number Diff line number Diff line change @@ -5238,7 +5238,7 @@ def shape(self):
5238
5238
Index ._add_comparison_methods ()
5239
5239
5240
5240
5241
- def ensure_index_from_sequences (sequences , names = None ):
5241
+ def ensure_index_from_sequences (sequences , names = None , dtype = None ):
5242
5242
"""
5243
5243
Construct an index from sequences of data.
5244
5244
@@ -5249,6 +5249,7 @@ def ensure_index_from_sequences(sequences, names=None):
5249
5249
----------
5250
5250
sequences : sequence of sequences
5251
5251
names : sequence of str
5252
+ dtype : NumPy dtype
5252
5253
5253
5254
Returns
5254
5255
-------
@@ -5274,7 +5275,7 @@ def ensure_index_from_sequences(sequences, names=None):
5274
5275
if len (sequences ) == 1 :
5275
5276
if names is not None :
5276
5277
names = names [0 ]
5277
- return Index (sequences [0 ], name = names )
5278
+ return Index (sequences [0 ], name = names , dtype = dtype )
5278
5279
else :
5279
5280
return MultiIndex .from_arrays (sequences , names = names )
5280
5281
You can’t perform that action at this time.
0 commit comments