2016-12-11 3 views
2

다음과 같은 데이터 프레임이 있습니다. ID 열, 월 및 고객이 특정 제품을 구입했는지 여부를 나타냅니다.reshape pandas 데이터 프레임 한 행을 여러 열로 바꿈

ID  Date  Buy_Or_Not 
1  2016-01  1 
1  2016-02  1 
1  2016-03  0 
1  2016-04  1 
1  2016-05  0 
2  2016-01  1 
2  2016-02  1 
2  2016-03  1 
2  2016-04  1 
2  2016-05  0 

이렇게 수정하면됩니다.

ID  2016-01 2016-02 2016-03 2016-04 2016-05 
1  1  1  0  1  0 
2  1  1  1  1  0 

이 문제를 해결하기위한 조언.

답변

4

여기서 사용 pd.pivot

In [58]: df.pivot(index='ID', columns='Date', values='Buy_Or_Not') 
Out[58]: 
Date 2016-01 2016-02 2016-03 2016-04 2016-05 
ID 
1   1  1  0  1  0 
2   1  1  1  1  0 

2) 사용

1)을 재 형성의 3 가지 방법 groupbyunstack

In [60]: df.groupby(['ID', 'Date']).sum().unstack('Date') 
Out[60]: 
    Buy_Or_Not 
Date 2016-01 2016-02 2016-03 2016-04 2016-05 
ID 
1    1  1  0  1  0 
2    1  1  1  1  0 
사용 pd.crosstab

In [59]: pd.crosstab(df['ID'], df['Date'], df['Buy_Or_Not'], aggfunc=sum) 
Out[59]: 
Date 2016-01 2016-02 2016-03 2016-04 2016-05 
ID 
1   1  1  0  1  0 
2   1  1  1  1  0 

3)

1

사용 pivot :

df = df.pivot(index='ID', columns='Date', values='Buy_Or_Not') 
print (df) 
Date 2016-01 2016-02 2016-03 2016-04 2016-05 
ID            
1   1  1  0  1  0 
2   1  1  1  1  0 

하면 같은 오류 :

ValueError: Index contains duplicate entries, cannot reshape

사용 pivot_table.

관련 문제