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

ENH: Support datetime.time objects with tzinfo in between_time and at_time #24043

Closed
flyjuice opened this issue Dec 2, 2018 · 4 comments · Fixed by #25280
Closed

ENH: Support datetime.time objects with tzinfo in between_time and at_time #24043

flyjuice opened this issue Dec 2, 2018 · 4 comments · Fixed by #25280
Labels
Datetime Datetime data dtype Enhancement Indexing Related to indexing on series/frames, not to indexes themselves Timezones Timezone data dtype
Milestone

Comments

@flyjuice
Copy link

flyjuice commented Dec 2, 2018

The functions for DataFrame, "between_time" and "at_time" are unfortunately not time zone aware.

I suggest adding a timezone parameter to these functions to clearly specify which time zone the requested time belongs to. The sampler should take into account the time zone of data frame, and the supplied time zone.

It will also be interesting to be able to sample at a specific time both daylight savings adjustment aware and agnostic. For example it will be interesting to sample at every 09:00 New York time (whether it is summer time or winter time, and irrespective of how we stored the time in our dataframe). For this a time zone parameter will not be sufficient, a time zone history will need to be supplied.

Time zone history for a specific city can be obtained by the user and supplied to the function:
https://www.timeanddate.com/time/zone/usa/new-york

@gfyoung gfyoung added Enhancement Datetime Datetime data dtype DataFrame DataFrame data structure labels Dec 2, 2018
@gfyoung
Copy link
Member

gfyoung commented Dec 2, 2018

@cozgenc : Thanks for reporting this! Could you provide an example to illustrate the concern that you bring up in the first line?

cc @mroeschke

@mroeschke
Copy link
Member

between_time and at_time already function when the index is tz-aware (the specified times are local to that timezone). I'm also not clear of the primary concern.

In [1]: dti = pd.date_range('2018', periods=3, freq='H', tz='US/Pacific')

In [4]: df
Out[4]:
                           0
2018-01-01 00:00:00-08:00  0
2018-01-01 01:00:00-08:00  1
2018-01-01 02:00:00-08:00  2

In [5]: df.between_time('1:00', '2:00')
Out[5]:
                           0
2018-01-01 01:00:00-08:00  1
2018-01-01 02:00:00-08:00  2

In [6]: df.at_time('1:00')
Out[6]:
                           0
2018-01-01 01:00:00-08:00  1

@mroeschke mroeschke added the Needs Info Clarification about behavior needed to assess issue label Dec 3, 2018
@flyjuice
Copy link
Author

flyjuice commented Dec 3, 2018

Please tell me how you will be able to get the rows for US/Eastern 09:00am, if the dataframe time zone is set to Europe/Berlin for example without actually accounting for time difference?

You are simply creating dependency between the code that prepared the dataframe, and the code that consumes the dataframe. If you add timezone parameter to these functions you may explicitly specify which time you are talking about. Time without a timezone doesn't represent a universal point in time.

@mroeschke
Copy link
Member

When using at_time and between_time, specified arguments are assumed to be in the local time relative to the timezone of the DatetimeIndex. Therefore, you can use tz_convert to switch between timezones when indexing with these methods.

However, it appears that currently passing datetime.time objects with tzinfo are not supported yet, which would address your primary concern I believe:

In [3]: df
Out[3]:
                           0
2018-01-01 00:00:00-08:00  0
2018-01-01 01:00:00-08:00  1
2018-01-01 02:00:00-08:00  2

In [8]: t_eastern = time(4, tzinfo=pytz.timezone('US/Eastern'))

In [10]: df.at_time(t_eastern)
NotImplementedError: argument 'time' with timezone info is not supported

@mroeschke mroeschke added Timezones Timezone data dtype Indexing Related to indexing on series/frames, not to indexes themselves and removed Needs Info Clarification about behavior needed to assess issue DataFrame DataFrame data structure labels Dec 3, 2018
@mroeschke mroeschke changed the title between_time and at_time ENH: Support datetime.time objects with tzinfo in between_time and at_time Dec 3, 2018
@jreback jreback added this to the 0.25.0 milestone Feb 16, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Datetime Datetime data dtype Enhancement Indexing Related to indexing on series/frames, not to indexes themselves Timezones Timezone data dtype
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants