2016-08-18 2 views
1

는 내가 아닌 제로 평균을 계산 한 이동에서 & 표준을 의미하고자하는 컬럼의 긴 목록을 가지고있다. 동일한 열 내의 다른 칼럼의 값이 아래 0어떻게 팬더에 여러 컬럼의 의미/비 - 제로 중간을 찾는 방법은?

I은 ​​중앙값을 계산하는이 코드가되지 않을 수 있기 때문에 단지 1 열을 기준으로 0으로 행을 삭제할 수없고, 0을 포함 등을 의미한다.

agg_list_oper={'ABC1':[max,np.std,np.mean,np.median], 
    'ABC2':[max,np.std,np.mean,np.median], 
    'ABC3':[max,np.std,np.mean,np.median], 
    'ABC4':[max,np.std,np.mean,np.median], 
..... 
..... 
..... 
    } 

    df=df_tmp.groupby(['id']).agg(agg_list_oper).reset_index() 

나는 한 번에 하나의 열을 처리하기 위해 루프로 긴 코드를 작성할 수 있음을 알고 있습니다. 팬더 groupby.agg() 또는 우아하게 다른 기능이 할 수있는 방법이 있나요?

답변

2

일시적하는 NaN과 0의를 대체 할 수 있습니다. 그런 다음 판다는 중위수를 계산하면서 NaN을 무시합니다.

df_tmp.replace(0, np.nan).groupby(['id']).agg(agg_list_oper).reset_index() 
+0

감사합니다. np.median 대신 np.nanmedian을 사용해야합니까? –

+1

'agg' 안에서 그걸 사용한다면, 그렇게 할 필요가 없습니다. Pandas는 numpy 함수를 pandas 함수로 변환하므로'np.median'도 NaN을 무시합니다. 결과는 둘 다 동일합니다. – ayhan