@@ -3753,6 +3753,29 @@ def test_groupby_groups_datetimeindex_tz(self):
37533753 result = df .groupby (level = 0 ).sum ()
37543754 assert_frame_equal (result , expected )
37553755
3756+ def test_groupby_multi_timezone (self ):
3757+
3758+ # combining multiple / different timezones yields UTC
3759+
3760+ data = """0,2000-01-28 16:47:00,America/Chicago
3761+ 1,2000-01-29 16:48:00,America/Chicago
3762+ 2,2000-01-30 16:49:00,America/Los_Angeles
3763+ 3,2000-01-31 16:50:00,America/Chicago
3764+ 4,2000-01-01 16:50:00,America/New_York"""
3765+
3766+ df = pd .read_csv (StringIO (data ),header = None , names = ['value' ,'date' ,'tz' ])
3767+ result = df .groupby ('tz' ).date .apply (lambda x : pd .to_datetime (x ).dt .tz_localize (x .name ))
3768+
3769+ expected = pd .to_datetime (Series (['2000-01-28 22:47:00' , '2000-01-29 22:48:00' , '2000-01-31 00:49:00' , '2000-01-31 22:50:00' , '2000-01-01 21:50:00' ]))
3770+ assert_series_equal (result , expected )
3771+
3772+ tz = 'America/Chicago'
3773+ result = pd .to_datetime (df .groupby ('tz' ).date .get_group (tz )).dt .tz_localize (tz )
3774+ expected = pd .to_datetime (Series (['2000-01-28 16:47:00' , '2000-01-29 16:48:00' ,'2000-01-31 16:50:00' ],
3775+ index = [0 ,1 ,3 ],
3776+ name = 'date' )).dt .tz_localize (tz )
3777+ assert_series_equal (result , expected )
3778+
37563779 def test_groupby_reindex_inside_function (self ):
37573780 from pandas .tseries .api import DatetimeIndex
37583781
0 commit comments