@@ -699,7 +699,6 @@ def test_get_group(self):
699
699
expected = wp .reindex (major = [x for x in wp .major_axis if x .month == 1 ])
700
700
assert_panel_equal (gp , expected )
701
701
702
-
703
702
# GH 5267
704
703
# be datelike friendly
705
704
df = DataFrame ({'DATE' : pd .to_datetime (['10-Oct-2013' , '10-Oct-2013' , '10-Oct-2013' ,
@@ -2837,6 +2836,49 @@ def test_groupby_list_infer_array_like(self):
2837
2836
result = df .groupby (['foo' , 'bar' ]).mean ()
2838
2837
expected = df .groupby ([df ['foo' ], df ['bar' ]]).mean ()[['val' ]]
2839
2838
2839
+ def test_groupby_nat_exclude (self ):
2840
+ # GH 6992
2841
+ df = pd .DataFrame ({'values' : np .random .randn (8 ),
2842
+ 'dt' : [np .nan , pd .Timestamp ('2013-01-01' ), np .nan , pd .Timestamp ('2013-02-01' ),
2843
+ np .nan , pd .Timestamp ('2013-02-01' ), np .nan , pd .Timestamp ('2013-01-01' )],
2844
+ 'str' : [np .nan , 'a' , np .nan , 'a' ,
2845
+ np .nan , 'a' , np .nan , 'b' ]})
2846
+ grouped = df .groupby ('dt' )
2847
+
2848
+ expected = [[1 , 7 ], [3 , 5 ]]
2849
+ keys = sorted (grouped .groups .keys ())
2850
+ self .assertEqual (len (keys ), 2 )
2851
+ for k , e in zip (keys , expected ):
2852
+ # grouped.groups keys are np.datetime64 with system tz
2853
+ # not to be affected by tz, only compare values
2854
+ self .assertEqual (grouped .groups [k ], e )
2855
+
2856
+ # confirm obj is not filtered
2857
+ tm .assert_frame_equal (grouped .grouper .groupings [0 ].obj , df )
2858
+ self .assertEqual (grouped .ngroups , 2 )
2859
+ expected = {Timestamp ('2013-01-01 00:00:00' ): np .array ([1 , 7 ]),
2860
+ Timestamp ('2013-02-01 00:00:00' ): np .array ([3 , 5 ])}
2861
+ for k in grouped .indices :
2862
+ self .assert_numpy_array_equal (grouped .indices [k ], expected [k ])
2863
+
2864
+ tm .assert_frame_equal (grouped .get_group (Timestamp ('2013-01-01' )), df .iloc [[1 , 7 ]])
2865
+ tm .assert_frame_equal (grouped .get_group (Timestamp ('2013-02-01' )), df .iloc [[3 , 5 ]])
2866
+
2867
+ self .assertRaises (KeyError , grouped .get_group , pd .NaT )
2868
+
2869
+ nan_df = DataFrame ({'nan' : [np .nan , np .nan , np .nan ],
2870
+ 'nat' : [pd .NaT , pd .NaT , pd .NaT ]})
2871
+ self .assertEqual (nan_df ['nan' ].dtype , 'float64' )
2872
+ self .assertEqual (nan_df ['nat' ].dtype , 'datetime64[ns]' )
2873
+
2874
+ for key in ['nan' , 'nat' ]:
2875
+ grouped = nan_df .groupby (key )
2876
+ self .assertEqual (grouped .groups , {})
2877
+ self .assertEqual (grouped .ngroups , 0 )
2878
+ self .assertEqual (grouped .indices , {})
2879
+ self .assertRaises (KeyError , grouped .get_group , np .nan )
2880
+ self .assertRaises (KeyError , grouped .get_group , pd .NaT )
2881
+
2840
2882
def test_dictify (self ):
2841
2883
dict (iter (self .df .groupby ('A' )))
2842
2884
dict (iter (self .df .groupby (['A' , 'B' ])))
0 commit comments