2012-11-28 2 views
3

방금 ​​pandas을 가져 와서 파이썬에서 데이터 분석을 훌륭하게 할 수 있다고 생각했습니다. ,팬더 : 두 열만 다른 모든 항목의 평균 계산

pandas.DataFrame({"p1": [1, 1, 2, 2, 3, 3]*2, 
        "p2": [1]*6+[2]*6, 
        "run": [1, 2]*6, 
        "result": xrange(12)}) 

    p1 p2 result run 
0 1 1  0 1 
1 1 1  1 2 
2 2 1  2 1 
3 2 1  3 2 
4 3 1  4 1 
5 3 1  5 2 
6 1 2  6 1 
7 1 2  7 2 
8 2 2  8 1 
9 2 2  9 2 
10 3 2  10 1 
11 3 2  11 2 

나는 이러한 매개 변수에 대한 result의 모든 값의 평균 모든 매개 변수 p1의 세트와 p2에 대해 하나의 항목이 포함 된 프레임을 생성하고 싶습니다 : 지금은 다음과 같은 형식의 pandas 데이터 프레임을 가지고 즉,

p1 p2 result 
0 1 1  0.5 
1 2 1  2.5 
2 3 1  4.5 
3 1 2  6.5 
4 2 2  8.5 
5 3 2 10.5 

pandas이 작업을 수행하는 방법은 무엇입니까? 원본 테이블을 복사하고 (resultrun) 열을 삭제하고 다시 색인화 한 다음 두 색인을 다중 색인으로 다시 결합한 다음 해당 외부 다중 색인 수준의 평균 방법을 실행합니다. 그게 방법이고, 그렇다면 코드에서이 인덱스 것들을 어떻게 올바르게 수행합니까?

+1

DF를 제공하는 복사 가능한/붙여 넣을 수있는 코드를 제공하려면이 도구를 실행/테스트하는 것이 좋습니다. 귀하의 게시물을 처리하는 것보다) –

+0

예. 'df.to_dict()'의 출력 –

답변

6

당신은 (나는 당신의 dataframe 안양 불렀다) GROUPBY 사용할 수 있습니다 :이 결과

df.groupby(['p1', 'p2']).mean() 

을 MultiIndex DataFrame에. 질문에서 레이아웃을 얻으려면 원하는 열만 선택하고 색인을 다시 설정하십시오.

df.groupby(['p1', 'p2']).mean()['result'].reset_index()