fillna() containing timezone aware datetime64 rounded (original) (raw)

Code Sample, a copy-pastable example if possible

import pandas as pd import datetime, pytz

#Non-timezone aware datetime s = pd.Series( [pd.NaT, pd.NaT, datetime.datetime(2016, 12, 12, 22, 24, 6, 100001) ] ) print(s) 0 NaT 1 NaT 2 2016-12-12 22:24:06.100001 dtype: datetime64[ns]

print(s.fillna(method='bfill')) 0 2016-12-12 22:24:06.100001 1 2016-12-12 22:24:06.100001 2 2016-12-12 22:24:06.100001 dtype: datetime64[ns]

Timezone aware datetime

s = pd.Series( [pd.NaT, pd.NaT, datetime.datetime(2016, 12, 12, 22, 24, 6, 100001, tzinfo=pytz.utc) ] ) print(s) 0 NaT 1 NaT 2 2016-12-12 22:24:06.100001+00:00

print(s.fillna(method='bfill')) 0 2016-12-12 22:24:06.100001024+00:00 1 2016-12-12 22:24:06.100001024+00:00 2 2016-12-12 22:24:06.100001024+00:00 dtype: datetime64[ns, UTC]

Problem description

This is similar to bug #6587 but difference is a timezone aware datetime. It looks like the dtype is being stripped and the value is converted to a float and back.

Expected Output

s = pd.Series( [pd.NaT, pd.NaT, datetime.datetime(2016, 12, 12, 22, 24, 6, 100001, tzinfo=pytz.utc) ] ) print(s) 0 NaT 1 NaT 2 2016-12-12 22:24:06.100001+00:00

print(s.fillna(method='bfill')) 0 2016-12-12 22:24:06.100001000+00:00 1 2016-12-12 22:24:06.100001000+00:00 2 2016-12-12 22:24:06.100001000+00:00 dtype: datetime64[ns, UTC]

Output of pd.show_versions()

Detailspandas: 0.19.1 numpy: 1.11.2 scipy: 0.18.1 pytz: 2016.7