@@ -8615,12 +8615,43 @@ def test_fillna_col_reordering(self):
8615
8615
self .assert_ (df .columns .tolist () == filled .columns .tolist ())
8616
8616
8617
8617
def test_take (self ):
8618
+
8618
8619
# homogeneous
8619
8620
#----------------------------------------
8621
+ order = [3 , 1 , 2 , 0 ]
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 [:, ['D' , 'B' , 'C' , 'A' ]]
8631
+ assert_frame_equal (result , expected , check_names = False )
8632
+
8633
+ # neg indicies
8634
+ order = [2 ,1 ,- 1 ]
8635
+ for df in [self .frame ]:
8636
+
8637
+ result = df .take (order , axis = 0 )
8638
+ expected = df .reindex (df .index .take (order ))
8639
+ assert_frame_equal (result , expected )
8640
+
8641
+ # axis = 1
8642
+ result = df .take (order , axis = 1 )
8643
+ expected = df .ix [:, ['C' , 'B' , 'D' ]]
8644
+ assert_frame_equal (result , expected , check_names = False )
8645
+
8646
+ # illegal indices
8647
+ self .assertRaises (IndexError , df .take , [3 ,1 ,2 ,30 ], axis = 0 )
8648
+ self .assertRaises (IndexError , df .take , [3 ,1 ,2 ,- 31 ], axis = 0 )
8649
+ self .assertRaises (IndexError , df .take , [3 ,1 ,2 ,5 ], axis = 1 )
8650
+ self .assertRaises (IndexError , df .take , [3 ,1 ,2 ,- 5 ], axis = 1 )
8620
8651
8621
8652
# mixed-dtype
8622
8653
#----------------------------------------
8623
- order = [4 , 1 , 2 , 0 , 3 ]
8654
+ order = [4 , 1 , 2 , 0 , 3 ]
8624
8655
for df in [self .mixed_frame ]:
8625
8656
8626
8657
result = df .take (order , axis = 0 )
@@ -8632,6 +8663,19 @@ def test_take(self):
8632
8663
expected = df .ix [:, ['foo' , 'B' , 'C' , 'A' , 'D' ]]
8633
8664
assert_frame_equal (result , expected )
8634
8665
8666
+ # neg indicies
8667
+ order = [4 ,1 ,- 2 ]
8668
+ for df in [self .mixed_frame ]:
8669
+
8670
+ result = df .take (order , axis = 0 )
8671
+ expected = df .reindex (df .index .take (order ))
8672
+ assert_frame_equal (result , expected )
8673
+
8674
+ # axis = 1
8675
+ result = df .take (order , axis = 1 )
8676
+ expected = df .ix [:, ['foo' , 'B' , 'D' ]]
8677
+ assert_frame_equal (result , expected )
8678
+
8635
8679
# by dtype
8636
8680
order = [1 , 2 , 0 , 3 ]
8637
8681
for df in [self .mixed_float ,self .mixed_int ]:
0 commit comments