Unwanted conversion from timedelta to float (but not datetime) · Issue #18493 · pandas-dev/pandas (original) (raw)
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]