Skip to content

Commit b43b803

Browse files
committed
BUG: Avoid casting to double type unnecessarily when setting values in time delta column
1 parent 4f71755 commit b43b803

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

pandas/core/internals/blocks.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2104,9 +2104,9 @@ def _box_func(self):
21042104
def _can_hold_element(self, element):
21052105
tipo = maybe_infer_dtype_type(element)
21062106
if tipo is not None:
2107-
return issubclass(tipo.type, np.timedelta64)
2107+
return issubclass(tipo.type, (np.timedelta64, np.int64))
21082108
return is_integer(element) or isinstance(
2109-
element, (timedelta, np.timedelta64))
2109+
element, (timedelta, np.timedelta64, np.int64))
21102110

21112111
def fillna(self, value, **kwargs):
21122112

pandas/tests/indexing/test_timedelta.py

+14
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,17 @@ def test_numpy_timedelta_scalar_indexing(self, start, stop,
8080
result = s.loc[slice(start, stop)]
8181
expected = s.iloc[expected_slice]
8282
tm.assert_series_equal(result, expected)
83+
84+
def test_set_dataframe_column_by_index(self):
85+
dt1 = pd.Timedelta(0)
86+
dt2 = pd.Timedelta(28767471428571405)
87+
88+
df = pd.DataFrame({'dt': pd.Series([dt1, dt2])})
89+
s = pd.Series([dt1])
90+
91+
value_before = df['dt'].iloc[1].value
92+
93+
df.loc[[True, False]] = s
94+
95+
value_after = df['dt'].iloc[1].value
96+
assert value_before == value_after

0 commit comments

Comments
 (0)