|
19 | 19 | is_scalar,
|
20 | 20 | is_sequence,
|
21 | 21 | is_sparse,
|
| 22 | + is_timedelta64_dtype, |
22 | 23 | )
|
23 | 24 | from pandas.core.dtypes.generic import ABCDataFrame, ABCSeries
|
24 | 25 | from pandas.core.dtypes.missing import _infer_fill_value, isna
|
@@ -429,11 +430,23 @@ def _setitem_with_indexer(self, indexer, value):
|
429 | 430 | # this preserves dtype of the value
|
430 | 431 | new_values = Series([value])._values
|
431 | 432 | if len(self.obj._values):
|
432 |
| - try: |
433 |
| - new_values = np.concatenate([self.obj._values, new_values]) |
434 |
| - except TypeError: |
| 433 | + if is_timedelta64_dtype( |
| 434 | + new_values |
| 435 | + ) and not is_timedelta64_dtype(self.obj): |
| 436 | + # GH#22717 np.concatenate incorrect casts |
| 437 | + # timedelta64 to integer |
435 | 438 | as_obj = self.obj.astype(object)
|
436 |
| - new_values = np.concatenate([as_obj, new_values]) |
| 439 | + new_values = np.concatenate( |
| 440 | + [as_obj, np.array([value], dtype=object)] |
| 441 | + ) |
| 442 | + else: |
| 443 | + try: |
| 444 | + new_values = np.concatenate( |
| 445 | + [self.obj._values, new_values] |
| 446 | + ) |
| 447 | + except TypeError: |
| 448 | + as_obj = self.obj.astype(object) |
| 449 | + new_values = np.concatenate([as_obj, new_values]) |
437 | 450 | self.obj._data = self.obj._constructor(
|
438 | 451 | new_values, index=new_index, name=self.obj.name
|
439 | 452 | )._data
|
|
0 commit comments