Unwanted conversion from timedelta to float (but not datetime) · Issue #18493 · pandas-dev/pandas (original) (raw)

@dcolascione

In the code below, masked assignment of a timedelta series converts the series values to float64. The same code running against a datetime correctly keeps the series dtype.

In [1]: import pandas as pd

In [2]: dseries=pd.Series(pd.date_range('1/1/2011', periods=5, freq='H')); dseries=dseries-dseries[0]; dseries
Out[2]: 
0   00:00:00
1   01:00:00
2   02:00:00
3   03:00:00
4   04:00:00
dtype: timedelta64[ns]

In [3]: dseries[dseries==dseries[0]]=None; dseries
Out[3]: 
0   -9.223372e+18
1    3.600000e+12
2    7.200000e+12
3    1.080000e+13
4    1.440000e+13
dtype: float64

In [4]: dseries=pd.Series(pd.date_range('1/1/2011', periods=5, freq='H')); dseries=dseries; dseries
Out[4]: 
0   2011-01-01 00:00:00
1   2011-01-01 01:00:00
2   2011-01-01 02:00:00
3   2011-01-01 03:00:00
4   2011-01-01 04:00:00
dtype: datetime64[ns]

In [5]: dseries[dseries==dseries[0]]=None; dseries
Out[5]: 
0                   NaT
1   2011-01-01 01:00:00
2   2011-01-01 02:00:00
3   2011-01-01 03:00:00
4   2011-01-01 04:00:00
dtype: datetime64[ns]