2012-11-04 7 views
5

약간의 기수 형식의 레이더 데이터가 있습니다. 팬더 라이브러리를 사용하여 올바르게 피벗하는 방법을 알 수 없습니다.pandas DataFrame 피봇 팅 문제

내 데이터 :

speed time 
loc  
A 63 0000 
B 61 0000 
C 63 0000 
D 65 0000 
A 73 0005 
B 71 0005 
C 73 0005 
D 75 0005 
나는이처럼 보이는 DataFrame로 그것을 설정하고 싶습니다

:

0000 0005 
loc  
A 63  73 
B 61  71 
C 63  73 
D 65  75 

내가 손보는 주위의 많은 일을했지만 수없는 것 올바른 구문을 얻으려면. 아무도 도와 줄 수 있습니까?

감사합니다.

답변

5

현재 피벗 방법을 사용할 수 있습니다 :

대단한
In [71]: df 
Out[71]: 
    speed time 
loc    
A  63  0 
B  61  0 
C  63  0 
D  65  0 
A  73  5 
B  71  5 
C  73  5 
D  75  5 

In [72]: df.reset_index().pivot('loc', 'time', 'speed') 
Out[72]: 
time 0 5 
loc   
A  63 73 
B  61 71 
C  63 73 
D  65 75 
+0

아 ... 좋은 속임수. 감사! –

+0

"ReshapeError : 색인에 중복 항목이 포함되어있어 모양을 변경할 수 없습니다"라는 결과가 나타납니다. 내 위치 중 일부는 공백이있는 문자열이며 관련 될 수 있습니까? –

+0

예. 나를 위해 일하지 않습니다. 'ReshapeError : Index 중복 항목이 포함되어 있습니다. 다시 형성 할 수 없습니다. ' –

3

데이터 소스를 가정하면 그것이 자동 증가 정수 인덱스를 사용, 그래서 나는 아직 인덱스로 loc을 설정하지 않은

from pandas.io.parsers import read_csv 
df = read_csv("radar_data.csv") 

df # shows what is in df 

     loc speed time 
0 A  63  0 
1 B  61  0 
2 C  63  0 
3 D  65  0 
4 A  73  5 
5 B  73  5 
6 C  75  5 
7 D  75  5 
8 A  67  0 
9 B  68  0 
10 C  68  0 
11 D  70  0 

주, csv 파일에 있습니다. 데이터 프레임이 이미 인덱스로 loc을 사용하는 경우

panel = df.set_index(['loc', 'time']).sortlevel(0).to_panel() 

그러나, 우리는 우리가 LOC 시간 계층 인덱스를 가질 수 있도록 그것으로 time 열을 추가해야합니다. set_index 메서드에서 새 append 옵션을 사용하여이 작업을 수행 할 수 있습니다. 이처럼 : - 어느 경우

panel = df.set_index(['time'], append=True).sortlevel(0).to_panel() 

, 우리는이 시나리오에 도착한다 : -

panel # shows what panel is 

<class 'pandas.core.panel.Panel'> 
Dimensions: 1 (items) x 4 (major) x 2 (minor) 
Items: speed to speed 
Major axis: A to D 
Minor axis: 0 to 5 

panel["speed"] # <--- This is what you are looking for. 


time 0 5 
loc   
A  63 67 
B  73 61 
C  68 73 
D  63 68 

희망이 도움이됩니다.

+0

, 감사합니다! 내 실수는 sortlevel(). to_panel() 호출을 사용하지 않는 데있었습니다. 지금 판다 (pandas) 문서의 해당 섹션을 읽는 중 ... 다시 한 번 감사드립니다! –

+0

환영합니다. 다행 이구나! 데이터 프레임의 경우 자동 증가 인덱스가 없습니다. 그래서 나는 'append = True' 옵션을 사용하면서 기존의'loc '인덱스에'time '을 추가 할 것을 제안하는 답변을 편집했습니다. –

+1

주어진 위치에 대한 모든 속도의 Series 객체를 가져 오려면 구문의 모양은 무엇입니까? IE에서 패널에서 행을 검색하려면 어떻게해야합니까? –