2014-11-30 8 views
0

다음과 같은 팬더 데이터 프레임이 있습니다 :ID 변수없이 데이터 프레임 재구성

var | 정보
id | 1
작성자 | A
title | B
id | 2
작성자 | C
title | D

어떻게하면 와이드 포맷으로 만들 수 있습니까?

id | 저자 | 제목
1 | A | B
2 | C | D

ID 변수가 없지만 3 개의 관측 그룹이 각각 고유 한 행을 구성해야합니다. 원래의 데이터 프레임에서 3 번 관찰 할 때마다 고유 한 ID 번호를 생성 할 수있는 방법이 있습니까? 그러면 나는 쉽게 변형시킬 수 있습니다.

감사합니다.

답변

1
당신은 DataFrame 바꿀 세 행의 그룹에 id 값을 복제 한 다음 pivot를 사용하는 시리즈의 기능 repeat을 사용할 수 있습니다

:

import pandas as pd 
df = pd.DataFrame({'var': ['id', 'author', 'title', 'id', 'author', 'title'], 
        'info': [1, 'A', 'B', 2, 'C', 'D']}) 
df['id'] = df['info'].ix[::3].repeat(3).values 
df_reshaped = df.pivot(index='id', columns='var', values='info') 
# Discard the redundant 'id' column 
df_reshaped = df_reshaped[['author', 'title']] 
print df_reshaped 

출력 :

var author title 
id    
1  A  B 
2  C  D 
+0

정말 고마워요을 ! 이것은 훌륭하게 작동했습니다. 한 쪽 메모 만 "id"로 시작하지만 나머지 행에 빈 셀이있는 두 번째 행을 제거 할 수있는 방법이 있습니까? – aesir

+1

실제로는 인덱스의 이름입니다. 원하는 경우'df_reshaped.index.name = None'을 사용하여 제거 할 수 있습니다. 행의 이름 인'var'도 마찬가지입니다. –

관련 문제