Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUG: pandas Timestamp tz_localize and tz_convert do not preserve freq attribute #25241

Closed
nmusolino opened this issue Feb 9, 2019 · 1 comment · Fixed by #25247
Closed

BUG: pandas Timestamp tz_localize and tz_convert do not preserve freq attribute #25241

nmusolino opened this issue Feb 9, 2019 · 1 comment · Fixed by #25247
Labels
Milestone

Comments

@nmusolino
Copy link
Contributor

nmusolino commented Feb 9, 2019

The pandas.Timestamp.tz_localize() and pandas.Timestamp.tz_convert() methods do not preserve the freq attribute. For background, the freq attribute is mostly a "helpful label", and it seems semantically ill-defined to me; cf. issue #15146, which proposes removing the attribute.

Code Sample

>>> import pandas
>>> import pytz

>>> t1 = pandas.Timestamp('2019-01-01 10:00', freq='H')
>>> print(t1.tz_localize(pytz.utc).freq)  
None

>>> t2 = pandas.Timestamp('2019-01-02 12:00', tz=pytz.utc, freq='T')
>>> print(t2.tz_convert(pytz.utc).freq)
None

Problem description

I don't think that pandas.Timestamp should actually have a freq attribute, but so long as it does, it should be propagated to the new timestamp value returned by tz_localize() or tz_convert. In the tz_convert case, the method should produce an "equivalent" timestamp with a different tz.

Expected Output

t1.tz_localize(pytz.utc).freq should equal t1.freq, and t2.tz_convert(pytz.utc).freq should equal t2.freq.

Output of pd.show_versions()

No module named 'dask'

INSTALLED VERSIONS

commit: 04df22f
python: 3.7.2.final.0
python-bits: 64
OS: Darwin
OS-release: 17.7.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.25.0.dev0+89.g04df22fbe
pytest: 4.2.0
pip: 19.0.1
setuptools: 40.7.3
Cython: 0.29.4
numpy: 1.15.4
scipy: 1.2.0
pyarrow: 0.11.1
xarray: 0.11.0
IPython: 7.2.0
sphinx: 1.8.4
patsy: 0.5.1
dateutil: 2.7.5
pytz: 2018.9
blosc: None
bottleneck: 1.2.1
tables: 3.4.4
numexpr: 2.6.9
feather: None
matplotlib: 3.0.2
openpyxl: 2.5.14
xlrd: 1.2.0
xlwt: 1.3.0
xlsxwriter: 1.1.2
lxml.etree: 4.3.0
bs4: 4.7.1
html5lib: 1.0.1
sqlalchemy: 1.2.17
pymysql: 0.9.3
psycopg2: None
jinja2: 2.10
s3fs: 0.2.0
fastparquet: 0.2.1
pandas_gbq: None
pandas_datareader: None
gcsfs: 0.1.2

@mroeschke
Copy link
Member

self.tz needs to be passed in these places. Agreed with you opinion on freq. PR's welcome!

return Timestamp(value, tz=tz)

return Timestamp(value, tz=None)

return Timestamp(self.value, tz=tz)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
3 participants