Skip to content

Commit 9c10dca

Browse files
committed
don't coerce float/complex to int/float
1 parent e32f7b0 commit 9c10dca

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

pandas/core/internals.py

+7-12
Original file line numberDiff line numberDiff line change
@@ -1013,6 +1013,11 @@ def coerce_to_target_dtype(self, other):
10131013
# we don't upcast to bool
10141014
return self.astype(object)
10151015

1016+
elif ((self.is_float or self.is_complex) and
1017+
(is_integer_dtype(dtype) or is_float_dtype(dtype))):
1018+
# don't coerce float/complex to int
1019+
return self
1020+
10161021
elif (self.is_datetime or
10171022
is_datetime64_dtype(dtype) or
10181023
is_datetime64tz_dtype(dtype)):
@@ -3404,16 +3409,6 @@ def comp(s):
34043409
return isnull(values)
34053410
return _maybe_compare(values, getattr(s, 'asm8', s), operator.eq)
34063411

3407-
def _cast_scalar(block, scalar):
3408-
dtype, val = infer_dtype_from_scalar(scalar, pandas_dtype=True)
3409-
if not is_dtype_equal(block.dtype, dtype):
3410-
dtype = find_common_type([block.dtype, dtype])
3411-
block = block.astype(dtype)
3412-
# use original value
3413-
val = scalar
3414-
3415-
return block, val
3416-
34173412
masks = [comp(s) for i, s in enumerate(src_list)]
34183413

34193414
result_blocks = []
@@ -3436,8 +3431,8 @@ def _cast_scalar(block, scalar):
34363431
# particular block
34373432
m = masks[i][b.mgr_locs.indexer]
34383433
if m.any():
3439-
b, val = _cast_scalar(b, d)
3440-
new_rb.extend(b.putmask(m, val, inplace=True))
3434+
b = b.coerce_to_target_dtype(d)
3435+
new_rb.extend(b.putmask(m, d, inplace=True))
34413436
else:
34423437
new_rb.append(b)
34433438
rb = new_rb

0 commit comments

Comments
 (0)