2013-04-22 98 views
2

数据框中行索引我知道如何通过大熊猫数据框的行迭代:通过迭代以相反的顺序

for id, value in df.iterrows(): 

,但现在我想经过以相反的顺序排(id是数字,但与行号不一致)。首先,我想在索引data.sort(ascending = False)上进行排序,然后运行相同的迭代过程,但它不起作用(它似乎仍然从较小的id变大)。

我该如何做到这一点?

回答

4

除非你使用Cython,否则通过DataFrame的迭代通常是一个坏主意。如果您真的必须,可以使用切片符号来反转DataFrame

In [8]: import pandas as pd 

In [9]: pd.DataFrame(np.arange(20).reshape(4,5)) 
Out[9]: 
    0 1 2 3 4 
0 0 1 2 3 4 
1 5 6 7 8 9 
2 10 11 12 13 14 
3 15 16 17 18 19 

In [10]: pd.DataFrame(np.arange(20).reshape(4,5))[::-1] 
Out[10]: 
    0 1 2 3 4 
3 15 16 17 18 19 
2 10 11 12 13 14 
1 5 6 7 8 9 
0 0 1 2 3 4 

In [11]: for row in pd.DataFrame(np.arange(20).reshape(4,5))[::-1].iterrows(): 
    ...:  print row 
    ...:  
(3, 0 15 
1 16 
2 17 
3 18 
4 19 
Name: 3) 
(2, 0 10 
1 11 
2 12 
3 13 
4 14 
Name: 2) 
(1, 0 5 
1 6 
2 7 
3 8 
4 9 
Name: 1) 
(0, 0 0 
1 1 
2 2 
3 3 
4 4 
Name: 0)