@@ -548,45 +548,13 @@ def test_multiindex_columns_empty_level(self):
548
548
grouped = df .groupby ("to filter" ).groups
549
549
assert grouped ["A" ] == [0 ]
550
550
551
- grouped = df .groupby ([("to filter" , "" )]).groups
552
- assert grouped ["A" ] == [0 ]
553
-
554
- df = DataFrame ([[1 , "A" ], [2 , "B" ]], columns = midx )
555
-
556
- expected = df .groupby ("to filter" ).groups
557
- result = df .groupby ([("to filter" , "" )]).groups
558
- assert result == expected
559
-
560
- df = DataFrame ([[1 , "A" ], [2 , "A" ]], columns = midx )
551
+ msg = "`groups` by one element list returns scalar is deprecated"
561
552
562
- expected = df .groupby ("to filter" ).groups
563
- result = df .groupby ([("to filter" , "" )]).groups
564
- tm .assert_dict_equal (result , expected )
565
-
566
- def test_groupby_multiindex_tuple (self ):
567
- # GH 17979
568
- df = DataFrame (
569
- [[1 , 2 , 3 , 4 ], [3 , 4 , 5 , 6 ], [1 , 4 , 2 , 3 ]],
570
- columns = MultiIndex .from_arrays ([["a" , "b" , "b" , "c" ], [1 , 1 , 2 , 2 ]]),
571
- )
572
- expected = df .groupby ([("b" , 1 )]).groups
573
- result = df .groupby (("b" , 1 )).groups
574
- tm .assert_dict_equal (expected , result )
575
-
576
- df2 = DataFrame (
577
- df .values ,
578
- columns = MultiIndex .from_arrays (
579
- [["a" , "b" , "b" , "c" ], ["d" , "d" , "e" , "e" ]]
580
- ),
581
- )
582
- expected = df2 .groupby ([("b" , "d" )]).groups
583
- result = df .groupby (("b" , 1 )).groups
584
- tm .assert_dict_equal (expected , result )
553
+ with tm .assert_produces_warning (FutureWarning , match = msg ):
554
+ grouped = df .groupby ([("to filter" , "" )]).groups
555
+ assert grouped [("A" ,)] == [0 ]
585
556
586
- df3 = DataFrame (df .values , columns = [("a" , "d" ), ("b" , "d" ), ("b" , "e" ), "c" ])
587
- expected = df3 .groupby ([("b" , "d" )]).groups
588
- result = df .groupby (("b" , 1 )).groups
589
- tm .assert_dict_equal (expected , result )
557
+ df = DataFrame ([[1 , "A" ], [2 , "B" ]], columns = midx )
590
558
591
559
def test_groupby_multiindex_partial_indexing_equivalence (self ):
592
560
# GH 17977
@@ -615,8 +583,11 @@ def test_groupby_multiindex_partial_indexing_equivalence(self):
615
583
result_max = df .groupby ([("a" , 1 )])["b" ].max ()
616
584
tm .assert_frame_equal (expected_max , result_max )
617
585
618
- expected_groups = df .groupby ([("a" , 1 )])[[("b" , 1 ), ("b" , 2 )]].groups
619
- result_groups = df .groupby ([("a" , 1 )])["b" ].groups
586
+ msg = "`groups` by one element list returns scalar is deprecated"
587
+
588
+ with tm .assert_produces_warning (FutureWarning , match = msg ):
589
+ expected_groups = df .groupby ([("a" , 1 )])[[("b" , 1 ), ("b" , 2 )]].groups
590
+ result_groups = df .groupby ([("a" , 1 )])["b" ].groups
620
591
tm .assert_dict_equal (expected_groups , result_groups )
621
592
622
593
def test_groupby_level (self , sort , multiindex_dataframe_random_data , df ):
@@ -723,11 +694,15 @@ def test_list_grouper_with_nat(self):
723
694
df = DataFrame ({"date" : date_range ("1/1/2011" , periods = 365 , freq = "D" )})
724
695
df .iloc [- 1 ] = pd .NaT
725
696
grouper = Grouper (key = "date" , freq = "YS" )
697
+ msg = "`groups` by one element list returns scalar is deprecated"
726
698
727
699
# Grouper in a list grouping
728
700
result = df .groupby ([grouper ])
729
- expected = {Timestamp ("2011-01-01" ): Index (list (range (364 )))}
730
- tm .assert_dict_equal (result .groups , expected )
701
+ expected = {(Timestamp ("2011-01-01" ),): list (range (364 )), (pd .NaT ,): [364 ]}
702
+
703
+ with tm .assert_produces_warning (FutureWarning , match = msg ):
704
+ result = result .groups
705
+ tm .assert_dict_equal (result , expected )
731
706
732
707
# Test case without a list
733
708
result = df .groupby (grouper )
@@ -994,11 +969,14 @@ def test_gb_key_len_equal_axis_len(self):
994
969
class TestIteration :
995
970
def test_groups (self , df ):
996
971
grouped = df .groupby (["A" ])
997
- groups = grouped .groups
972
+ msg = "`groups` by one element list returns scalar is deprecated"
973
+
974
+ with tm .assert_produces_warning (FutureWarning , match = msg ):
975
+ groups = grouped .groups
998
976
assert groups is grouped .groups # caching works
999
977
1000
978
for k , v in grouped .groups .items ():
1001
- assert (df .loc [v ]["A" ] == k ).all ()
979
+ assert (df .loc [v ]["A" ] == k [ 0 ] ).all ()
1002
980
1003
981
grouped = df .groupby (["A" , "B" ])
1004
982
groups = grouped .groups
0 commit comments