@@ -8602,12 +8602,43 @@ def test_fillna_col_reordering(self):
8602
8602
self .assert_ (df .columns .tolist () == filled .columns .tolist ())
8603
8603
8604
8604
def test_take (self ):
8605
+
8605
8606
# homogeneous
8606
8607
#----------------------------------------
8608
+ order = [3 , 1 , 2 , 0 ]
8609
+ for df in [self .frame ]:
8610
+
8611
+ result = df .take (order , axis = 0 )
8612
+ expected = df .reindex (df .index .take (order ))
8613
+ assert_frame_equal (result , expected )
8614
+
8615
+ # axis = 1
8616
+ result = df .take (order , axis = 1 )
8617
+ expected = df .ix [:, ['D' , 'B' , 'C' , 'A' ]]
8618
+ assert_frame_equal (result , expected , check_names = False )
8619
+
8620
+ # neg indicies
8621
+ order = [2 ,1 ,- 1 ]
8622
+ for df in [self .frame ]:
8623
+
8624
+ result = df .take (order , axis = 0 )
8625
+ expected = df .reindex (df .index .take (order ))
8626
+ assert_frame_equal (result , expected )
8627
+
8628
+ # axis = 1
8629
+ result = df .take (order , axis = 1 )
8630
+ expected = df .ix [:, ['C' , 'B' , 'D' ]]
8631
+ assert_frame_equal (result , expected , check_names = False )
8632
+
8633
+ # illegal indices
8634
+ self .assertRaises (IndexError , df .take , [3 ,1 ,2 ,30 ], axis = 0 )
8635
+ self .assertRaises (IndexError , df .take , [3 ,1 ,2 ,- 31 ], axis = 0 )
8636
+ self .assertRaises (IndexError , df .take , [3 ,1 ,2 ,5 ], axis = 1 )
8637
+ self .assertRaises (IndexError , df .take , [3 ,1 ,2 ,- 5 ], axis = 1 )
8607
8638
8608
8639
# mixed-dtype
8609
8640
#----------------------------------------
8610
- order = [4 , 1 , 2 , 0 , 3 ]
8641
+ order = [4 , 1 , 2 , 0 , 3 ]
8611
8642
for df in [self .mixed_frame ]:
8612
8643
8613
8644
result = df .take (order , axis = 0 )
@@ -8619,6 +8650,19 @@ def test_take(self):
8619
8650
expected = df .ix [:, ['foo' , 'B' , 'C' , 'A' , 'D' ]]
8620
8651
assert_frame_equal (result , expected )
8621
8652
8653
+ # neg indicies
8654
+ order = [4 ,1 ,- 2 ]
8655
+ for df in [self .mixed_frame ]:
8656
+
8657
+ result = df .take (order , axis = 0 )
8658
+ expected = df .reindex (df .index .take (order ))
8659
+ assert_frame_equal (result , expected )
8660
+
8661
+ # axis = 1
8662
+ result = df .take (order , axis = 1 )
8663
+ expected = df .ix [:, ['foo' , 'B' , 'D' ]]
8664
+ assert_frame_equal (result , expected )
8665
+
8622
8666
# by dtype
8623
8667
order = [1 , 2 , 0 , 3 ]
8624
8668
for df in [self .mixed_float ,self .mixed_int ]:
0 commit comments