2016-12-03 3 views
1

나는 다음과 같은 형식으로 내가재편 팬더 dataframe 그룹화 변수는

ID Name_1 Name_2 
0 1  Jim Jimmy 
1 2 Mark Marko 
2 3 Sergi Sergi 

그래서 두 이름을 비교할 수있는 다음과 같은 형식으로 dataframe을 재편 할

ID Name 
0 1 Jim 
1 1 Jimmy 
2 2 Mark 
3 2 Marko 
4 3 Sergi 
4 3 Sergi 

의 팬더 dataFrame 있습니다. 이 요구 사항에 pd.pivot 또는 pd.pivottable을 사용할 수 없습니다. 상당히 간단해야합니다. 제발, 어떻게 할 수 있니?

답변

4

당신은 열 이름에 pivotcumcount, 마지막 add_prefix를 사용할 수 있습니다

df['groups'] = df.groupby('ID').cumcount() + 1 
df = df.pivot(index='ID', columns='groups', values='Name').add_prefix('Name_') 
print (df) 
groups Name_1 Name_2 
ID     
1   Jim Jimmy 
2  Mark Marko 
3  Sergi Sergi 

groupbyunstack 또 다른 솔루션, 마지막 add_prefix 열 이름에 :

df1 = df.groupby('ID')["Name"] \ 
     .apply(lambda x: pd.Series(x.values)) \ 
     .unstack(1) \ 
     .rename(columns=lambda x: x+1) \ 
     .add_prefix('Name_') 
print (df1) 
    Name_1 Name_2 
ID    
1  Jim Jimmy 
2 Mark Marko 
3 Sergi Sergi 
+0

일했다. 고맙습니다! – Spartan07

+0

질문이 하나 더 있으십니까? 나는 팬더에 stackoverflow를 사용하는 것에 익숙하지 않다. 질문을 게시 할 때 데이터 프레임을 나타내는 방법을 알려주시겠습니까? – Spartan07

+1

그래서 그물 줄 필요가 '1 1 지미'에서 '1 1 지미'(이전 4 칸)로 바뀝니다. – jezrael