2016-11-23 1 views
1

팬더 dataframe의 모양 변경/피벗

0 1 2 
a   
1 2 5 3 
2 4 1 NaN 
3 7 NaN NaN 

당신이 쉬운 방법을 알고 있는가에

a b 
0 1 2 
1 1 5 
2 2 4 
3 1 3 
4 3 7 
5 2 1 

을 dataframe? 다음과 같이

+0

을 미안하지만 난 볼 수 없습니다 여기 패턴. 결과 행렬의 요소는 원본과 얼마나 관련이 있습니까? –

+0

'b'열에 혈압 수치가 표시되고 'a'열에 환자 ID가 표시된다고 가정합니다. 각 환자의 모든 수치를 한 줄에 입력하고 싶습니다. 각 환자는 1에서 최대 10 회의 판독 값을 가질 수 있습니다. 따라서 최종 테이블의 형상은 number_of_patients x 10입니다. – user2725109

답변

1

내가 이런 짓을 했을까 :

In [11]: df.groupby("a")["b"].apply(lambda x: pd.Series(x.values)) 
Out[11]: 
a 
1 0 2 
    1 5 
    2 3 
2 0 4 
    1 1 
3 0 7 
Name: b, dtype: int64 

을 당신이 다음 언 스택 원하는 형태를 얻을 수 (하지만 아마 위 이상) :

In [22]: df.groupby('a')["b"].apply(lambda x: pd.Series(x.values)).unstack(1) 
Out[22]: 
    0 1 2 
a 
1 2.0 5.0 3.0 
2 4.0 1.0 NaN 
3 7.0 NaN NaN 
+0

훌륭한 솔루션. 감사. – user2725109

관련 문제