2013-04-22 6 views
2

에서 DataFrame 행 색인을 통해 나는 팬더 DataFrame의 행을 반복하는 방법을 알고 :순회 역순

for id, value in df.iterrows(): 

을하지만 지금은 id가 숫자 (역순으로 행을 가고 싶습니다, 행 번호와 일치하지는 않습니다). 첫째로 인덱스 data.sort(ascending = False)에 일종의 작업을 한 다음 동일한 반복 절차를 실행하는 것으로 생각했지만 작동하지 않았습니다 (여전히 작은 id에서 큰 것으로 표시되는 것처럼 보입니다).

어떻게하면됩니까?

답변

4

DataFrame을 반복하는 것은 보통 Cython을 사용하지 않는 한 나쁜 생각입니다. 실제로해야 할 경우 슬라이스 표기법을 사용하여 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)