2016-09-05 2 views
1

나는 A_Bucket과 B_Bucket이라는 두 개의 분리 된 그룹 유형으로 팬더 데이터 프레임을 그룹화하고 각 A_Bucket 그룹을 컬럼으로 변환하려고합니다. 나는 같은 그룹을 얻을 :Pandas groupby 그룹을 열로 변환하십시오.

grouped = my_new_df.groupby(['A_Bucket','B_Bucket']) 

내가 A_Bucket 그룹을 열 수와 B_Bucket 그룹이 지표가되고 싶어요. 'A'에는 약 20 개의 값이 있고 B에는 약 20 개의 값이 있으므로 약 400 개의 그룹이 있습니다.

나는 그룹화 인쇄의 유형 내가 얻을 때 :

type of grouped2 = <class 'pandas.core.groupby.DataFrameGroupBy'> 
A_Bucket B_Bucket 
0.100  100.0   5.418450 
      120.0   18.061367 
0.125  80.0    3.100920 
      100.0   14.137063 
      120.0   30.744823 
      140.0   38.669950 
      160.0   48.303129 
      180.0   74.576333 
      200.0   125.119950 
0.150  60.0    0.003200 
      80.0    2.274807 
      100.0   5.350074 
      120.0   23.272970 
      140.0   40.131780 
      160.0   47.036912 
      180.0   72.438978 
      200.0   117.365480 

그래서 A_Bucket 그룹 0.100 만이 값을 가지고 있지만, 0.125 7.을 가지고 내가 원하는이 같은 dataframe :

 0.1  0.125  0.15 
80  NaN  3.10092 2.274807 
100  5.41845 14.137063 5.350074 
120  18.0613 30.744823 23.27297 
140  NaN  38.66995 40.13178 
160  NaN  48.303129 47.036912 
180  NaN  74.576333 72.438978 
200  NaN  125.11995 NaN 

I 이 질문을 보았습니다 : Pandas groupby result into multiple columns

그러나 나는 구문을 이해하지 못하고 필요에 따라 첫 번째 그룹을 열로 정렬하지 않습니다. 또한 하나 이상의 출력 열에서이 작업을 수행하기를 원합니다.

어떻게하면됩니까?

+0

이것은 트릭을하는 것처럼 보이지 않는다. 인덱스를 여러 번 반복하며 더 많은 열을가집니다. 나는 20x20에 대한 데이터 프레임을 가질 것으로 기대하지만, 이것은 186 x 318을 준다. – Matt

+0

죄송합니다. 나는 당신의 질문을 아주 조심스럽게 읽지 않았습니다. 따라서 실제로는 데이터 프레임을 길고 넓은 형식으로 재 형성하려고합니다. 하나의 질문이지만, groupby 후에 어떤 집계도하지 않은 것 같습니다. – Psidom

+0

예, 죄송합니다. 거기에 넣지 않았습니다. 각 그룹/하위 그룹의 평균을 원합니다. 하나의 출력 열에 대해서는 20 x 20을 기대하지만 2 개의 출력 열에 대해서는 데이터 프레임이 어떻게 보이는지 알 수 없습니다. – Matt

답변

5

내가 제대로 이해하면,이 경우에 사용할 수있는 대신 요약하여 그룹의 데이터 프레임을 바꿀려고 set_index()unstack() :

df.set_index(["A_Bucket", "B_Bucket"]).unstack(level=0) 

#    Value 
# A_Bucket  0.100  0.125  0.150 
# B_Bucket   
#  60.0  NaN  NaN 0.003200 
#  80.0  NaN 3.100920 2.274807 
# 100.0 5.418450 14.137063 5.350074 
# 120.0 18.061367 30.744823 23.272970 
# 140.0  NaN 38.669950 40.131780 
# 160.0  NaN 48.303129 47.036912 
# 180.0  NaN 74.576333 72.438978 
# 200.0  NaN 125.119950 117.365480 

당신이 참으로 그룹화 한 후 요약을 수행 한 경우 에 의해, 당신은 아직도 할 수있다 df.groupby(['A_Bucket', 'B_Bucket']).mean().unstack(level=0)

+0

네, 두 번째 것 (mean())은 완벽하게 작동합니다. 나는 더 나은 스택을 이해합니다. 고맙습니다! – Matt