판다 DataFrame 어떻게 그룹 (피봇?) 지정된 컬럼의 값을 기준으로 행했지만 원래의 인덱스를 유지?

fhfuih :

나는 팬더 사용하여 변수 제거 알고리즘을 구현하기 위해 노력하고 있습니다. 사람 합 아웃 단계에 익숙해있는 경우, A, B는, (C)는 (반드시 부울 값)와 F는 이러한 변수의 값이 소정의 일부 기능 (요소)는 변수 테이블을 지정.

       a      b      c      f
0   True   True   True  0.015
1   True   True  False  0.035
2   True  False   True  0.270
3   True  False  False  0.180
4  False   True   True  0.030
5  False   True  False  0.070
6  False  False   True  0.240
7  False  False  False  0.160

내가 합계를 f경우 모든 행의들 (a,c)=(T,T)도, f어디 모든 행의이야 (a,c)=(T,F), (F,T), (F,F). 결과의 모습처럼

       a     c     f
0   True  True  0.285
1   True   False  0.215
2   False  True  0.27
3   False  False  0.23

따라서 이름 "합 출력 ( b)".

내가 얻을 수있는 가장 가까운 사용하고 pd.pivot_table(df, index=df.index.values, columns=['a', 'c'], values='f', aggfunc=np.sum, fill_value=0).sum()있는 수익을

a      c
False  False    xxx
       True     xxx
True   False    xxx
       True     xxx

unstack우리에게 제공 할 수 있습니다

c      False  True
a
False   xxx   xxx
True    xxx   xxx

이는 내가 원하지 않는 것을 아직도있다.

내가 합 아웃에 임의의 많은 변수, 임의로 많은 변수를 가질 수 있습니다 (또는 계속)합니다. 이 경우에 내가 할 수있는 그래서 비록 pd.pivot_table(df, index=<some of the var left, e.g. a>, columns=<other var left, e.g. c>, values='f', aggfunc=np.sum)같은 결과를 얻을, 다른 경우에는 하나의 변수가 왼쪽 또는 너무 많은있을 수 있습니다.

변수는 부울 유형되지 않을 수도 있습니다,하지만 그들은 유한 및 개별 도메인이 있어야합니다.

또한 여기 내 인덱스는 의미 인덱스 더미 참고. "원래 인덱스를 유지"에 의하여 나는 그들을 떠나 단지 의미 더미,하지만 어떻게 든 단지를 따라 집계 axis=0.

사람이 일을 할 수있는 데이터 구조와 같은 더 나은 다차원 배열을 제안 할 수있는 경우 또한, 그것은 또한 OK입니다.

보리스 :

이 같은 GROUPBY 및 AGG 기능을 사용할 수 있습니다.

df.groupby(['a','c'])['f'].agg('sum').reset_index()

추천

출처http://43.154.161.224:23101/article/api/json?id=34519&siteId=1