2017-04-07 1 views
1

한다고 가정 I는 다음과 같이 데이터가 있습니다팬더 데이터 프레임 구조를 어떻게 변경합니까?

item | date | status 

A  12-01 E 
A  12-02 E 
A  12-03 B 
A  12-04 B 
B  12-01 E 
B  12-02 B 
B  12-03 S 
B  12-04 S 
C  12-03 E 
C  12-04 E 

이제 어떻게 내가 원하는 아래로 데이터를 확인하는 것입니다, 나는 각 행을 만들고 싶어 그래서 요약

item | 12-01 | 12-02 | 12-03 | 12-04 

A  E   E  B  B 
B  E   B  S  S 
C       E  E 

을 아이템의 역사로. 이것이 '피벗'이라고 들었지만 팬더가 쉽게 "그렇게"하는 것은 확실하지 않습니다.

아무도 도와 줄 수 있습니까?!

답변

3

당신은 pivot 사용할 수 있습니다

df = df.pivot(index='item', columns='date', values='status') 
print (df) 
date 12-01 12-02 12-03 12-04 
item       
A  E  E  B  B 
B  E  B  S  S 
C  None None  E  E 

만약 ','.join 또는 sum 같은 일부 집계 함수와 date 사용 pivot_tableitem에 중복 :

print (df) 
    item date status 
0  A 12-01  E <-duplicates A, 12-01 
1  A 12-01  C <-duplicates A, 12-01 
2  A 12-02  E 
3  A 12-03  B 
4  A 12-04  B 
5  B 12-01  E 
6  B 12-02  B 
7  B 12-03  S 
8  B 12-04  S 
9  C 12-03  E 
10 C 12-04  E 

df = df.pivot_table(index='item', columns='date', values='status', aggfunc=','.join) 
print (df) 
date 12-01 12-02 12-03 12-04 
item       
A  E,C  E  B  B 
B  E  B  S  S 
C  None None  E  E