Skip to content

BUG: Series(DTI/TDI) loses the frequency information from original DTI/TDI #20937

Open
@jschendel

Description

@jschendel

Code Sample, a copy-pastable example if possible

DTI example below, same general behavior occurs for TDI:

In [2]: dti = pd.date_range('20180101', periods=3, freq='B')

In [3]: dti.freq
Out[3]: <BusinessDay>

In [4]: s = pd.Series(dti)

In [5]: s.dt.freq
Out[5]: 'D'

This appears to be caused by the dt accessor overriding the freq definition, which was done for perf reasons in #17210:

@property
def freq(self):
return self._get_values().inferred_freq

If I remove the code above, the resulting frequency of the Series is None. This is consistent with one of the error messages displayed when trying to add an integer to the Series, which works at the DTI/TDI level when a frequency is present:

In [6]: dti + 4
Out[6]: DatetimeIndex(['2018-01-05', '2018-01-08', '2018-01-09'], dtype='datetime64[ns]', freq='B')

In [7]: s + 4
---------------------------------------------------------------------------
NullFrequencyError: Cannot shift with no freq

During handling of the above exception, another exception occurred:

TypeError: incompatible type for a datetime/timedelta operation [add]

Problem description

Series ignores the original frequency, and subsequent frequency dependent operations do not work.

Expected Output

I'd expect frequency to be retained, and frequency dependent operations to work when one is set.

Output of pd.show_versions()

INSTALLED VERSIONS

commit: b02c69a
python: 3.6.1.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 78 Stepping 3, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None
LOCALE: None.None

pandas: 0.23.0rc2
pytest: 3.1.2
pip: 9.0.1
setuptools: 39.0.1
Cython: 0.28.2
numpy: 1.13.3
scipy: 1.0.0
pyarrow: 0.6.0
xarray: 0.9.6
IPython: 6.1.0
sphinx: 1.5.6
patsy: 0.4.1
dateutil: 2.6.0
pytz: 2017.2
blosc: None
bottleneck: 1.2.1
tables: 3.4.2
numexpr: 2.6.4
feather: 0.4.0
matplotlib: 2.0.2
openpyxl: 2.4.8
xlrd: 1.1.0
xlwt: 1.3.0
xlsxwriter: 0.9.8
lxml: 3.8.0
bs4: None
html5lib: 0.999
sqlalchemy: 1.1.13
pymysql: None
psycopg2: None
jinja2: 2.9.6
s3fs: None
fastparquet: 0.1.5
pandas_gbq: None
pandas_datareader: None

Metadata

Metadata

Assignees

Labels

BugDatetimeDatetime data dtypeFrequencyDateOffsetsNeeds DiscussionRequires discussion from core team before further actionfreq retentionUser expects "freq" attribute to be preserved

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions