@@ -1030,6 +1030,21 @@ def test_basic(self):
1030
1030
str (df .values )
1031
1031
str (df )
1032
1032
1033
+ # GH8623
1034
+ x = pd .DataFrame ([[1 ,'John P. Doe' ],[2 ,'Jane Dove' ],[1 ,'John P. Doe' ]],
1035
+ columns = ['person_id' ,'person_name' ])
1036
+ x ['person_name' ] = pd .Categorical (x .person_name ) # doing this breaks transform
1037
+
1038
+ expected = x .iloc [0 ].person_name
1039
+ result = x .person_name .iloc [0 ]
1040
+ self .assertEqual (result ,expected )
1041
+
1042
+ result = x .person_name [0 ]
1043
+ self .assertEqual (result ,expected )
1044
+
1045
+ result = x .person_name .loc [0 ]
1046
+ self .assertEqual (result ,expected )
1047
+
1033
1048
def test_creation_astype (self ):
1034
1049
l = ["a" ,"b" ,"c" ,"a" ]
1035
1050
s = pd .Series (l )
@@ -1477,6 +1492,28 @@ def test_groupby(self):
1477
1492
result = gb .sum ()
1478
1493
tm .assert_frame_equal (result , expected )
1479
1494
1495
+ # GH 8623
1496
+ x = pd .DataFrame ([[1 ,'John P. Doe' ],[2 ,'Jane Dove' ],[1 ,'John P. Doe' ]],
1497
+ columns = ['person_id' ,'person_name' ])
1498
+ x ['person_name' ] = pd .Categorical (x .person_name )
1499
+
1500
+ g = x .groupby (['person_id' ])
1501
+ result = g .transform (lambda x :x )
1502
+ tm .assert_frame_equal (result , x [['person_name' ]])
1503
+
1504
+ result = x .drop_duplicates ('person_name' )
1505
+ expected = x .iloc [[0 ,1 ]]
1506
+ tm .assert_frame_equal (result , expected )
1507
+
1508
+ def f (x ):
1509
+ return x .drop_duplicates ('person_name' ).iloc [0 ]
1510
+
1511
+ result = g .apply (f )
1512
+ expected = x .iloc [[0 ,1 ]].copy ()
1513
+ expected .index = Index ([1 ,2 ],name = 'person_id' )
1514
+ expected ['person_name' ] = expected ['person_name' ].astype ('object' )
1515
+ tm .assert_frame_equal (result , expected )
1516
+
1480
1517
def test_pivot_table (self ):
1481
1518
1482
1519
raw_cat1 = Categorical (["a" ,"a" ,"b" ,"b" ], categories = ["a" ,"b" ,"z" ])
0 commit comments