Skip to content

Commit 88f144b

Browse files
committed
Correct ValueError invalid type promotion exception
1 parent 6f90340 commit 88f144b

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

doc/source/whatsnew/v0.18.2.txt

+3
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ API changes
5858
- Calls to ``.sample()`` will respect the random seed set via ``numpy.random.seed(n)`` (:issue:`13161`)
5959

6060

61+
- Correct ValueError invalid type promotion exception (:issue:`13234`)
62+
63+
6164
.. _whatsnew_0182.api.tolist:
6265

6366
``Series.tolist()`` will now return Python types

pandas/core/indexing.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -336,9 +336,12 @@ def _setitem_with_indexer(self, indexer, value):
336336
# this preserves dtype of the value
337337
new_values = Series([value])._values
338338
if len(self.obj._values):
339-
new_values = np.concatenate([self.obj._values,
340-
new_values])
341-
339+
try:
340+
new_values = np.concatenate([self.obj._values,
341+
new_values])
342+
except TypeError:
343+
new_values = np.concatenate([self.obj.asobject,
344+
new_values])
342345
self.obj._data = self.obj._constructor(
343346
new_values, index=new_index, name=self.obj.name)._data
344347
self.obj._maybe_update_cacher(clear=True)

pandas/tests/series/test_indexing.py

+10
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,16 @@ def test_getitem_generator(self):
287287
assert_series_equal(result, expected)
288288
assert_series_equal(result2, expected)
289289

290+
def test_type_promotion(self):
291+
# GH12599
292+
s = pd.Series()
293+
s["a"] = pd.Timestamp("2016-01-01")
294+
s["b"] = 3.0
295+
s["c"] = "foo"
296+
expected = Series([pd.Timestamp("2016-01-01"), 3.0, "foo"],
297+
index=["a", "b", "c"])
298+
assert_series_equal(s, expected)
299+
290300
def test_getitem_boolean_object(self):
291301
# using column from DataFrame
292302

0 commit comments

Comments
 (0)