@@ -3140,6 +3140,55 @@ def test_timegrouper_with_reg_groups(self):
3140
3140
result2 = df .groupby ([pd .TimeGrouper (freq = freq ), 'user_id' ])['whole_cost' ].sum ()
3141
3141
assert_series_equal (result2 , expected )
3142
3142
3143
+ def test_timegrouper_get_group (self ):
3144
+ # GH 6914
3145
+
3146
+ df_original = DataFrame ({
3147
+ 'Buyer' : 'Carl Joe Joe Carl Joe Carl' .split (),
3148
+ 'Quantity' : [18 ,3 ,5 ,1 ,9 ,3 ],
3149
+ 'Date' : [datetime (2013 ,9 ,1 ,13 ,0 ), datetime (2013 ,9 ,1 ,13 ,5 ),
3150
+ datetime (2013 ,10 ,1 ,20 ,0 ), datetime (2013 ,10 ,3 ,10 ,0 ),
3151
+ datetime (2013 ,12 ,2 ,12 ,0 ), datetime (2013 ,9 ,2 ,14 ,0 ),]})
3152
+ df_reordered = df_original .sort (columns = 'Quantity' )
3153
+
3154
+ # single grouping
3155
+ expected_list = [df_original .iloc [[0 , 1 , 5 ]], df_original .iloc [[2 , 3 ]],
3156
+ df_original .iloc [[4 ]]]
3157
+ dt_list = ['2013-09-30' , '2013-10-31' , '2013-12-31' ]
3158
+
3159
+ for df in [df_original , df_reordered ]:
3160
+ grouped = df .groupby (pd .Grouper (freq = 'M' , key = 'Date' ))
3161
+ for t , expected in zip (dt_list , expected_list ):
3162
+ dt = pd .Timestamp (t )
3163
+ result = grouped .get_group (dt )
3164
+ assert_frame_equal (result , expected )
3165
+
3166
+ # multiple grouping
3167
+ expected_list = [df_original .iloc [[1 ]], df_original .iloc [[3 ]],
3168
+ df_original .iloc [[4 ]]]
3169
+ g_list = [('Joe' , '2013-09-30' ), ('Carl' , '2013-10-31' ), ('Joe' , '2013-12-31' )]
3170
+
3171
+ for df in [df_original , df_reordered ]:
3172
+ grouped = df .groupby (['Buyer' , pd .Grouper (freq = 'M' , key = 'Date' )])
3173
+ for (b , t ), expected in zip (g_list , expected_list ):
3174
+ dt = pd .Timestamp (t )
3175
+ result = grouped .get_group ((b , dt ))
3176
+ assert_frame_equal (result , expected )
3177
+
3178
+ # with index
3179
+ df_original = df_original .set_index ('Date' )
3180
+ df_reordered = df_original .sort (columns = 'Quantity' )
3181
+
3182
+ expected_list = [df_original .iloc [[0 , 1 , 5 ]], df_original .iloc [[2 , 3 ]],
3183
+ df_original .iloc [[4 ]]]
3184
+
3185
+ for df in [df_original , df_reordered ]:
3186
+ grouped = df .groupby (pd .Grouper (freq = 'M' ))
3187
+ for t , expected in zip (dt_list , expected_list ):
3188
+ dt = pd .Timestamp (t )
3189
+ result = grouped .get_group (dt )
3190
+ assert_frame_equal (result , expected )
3191
+
3143
3192
def test_cumcount (self ):
3144
3193
df = DataFrame ([['a' ], ['a' ], ['a' ], ['b' ], ['a' ]], columns = ['A' ])
3145
3194
g = df .groupby ('A' )
0 commit comments