2017-11-26 4 views
-1

난 내가 '피봇'기능을 사용하여 시도파이썬 : 긴 데이터 폭 넓은 데이터는

userid  monday_x  monday_y  tuesday_x  tuesday_y 

user1  1     2    3    4 

user2  10     11   12    13 

로 변환 할이

userid  day  x   y 

user1  monday  1   2 

user1  tuesday 3   4 

user2  monday  10  11 

user2  tuesday 12  13 

같은 데이터를 가지고있다. 그러나 나는 새로운 속성 이름을 만들 수 없다. 그런 다음 각 행을 수동으로 복사하려고했습니다. 그러나 팬더는 다음과 같은 방식으로 생성됩니다.

userid  monday_x  monday_y  tuesday_x  tuesday_y 

user1  1     2    NaN    NaN 

user1  NaN    NaN    3    4 

user2  10     11   NaN    NaN 

user2  NaN    NaN    12    13 

파이썬에서 이러한 종류의 변환을 수행하는 기능이 내장되어 있습니까?

+0

무엇을 시도 했습니까? 코드를 보여주세요. –

답변

1

pivot_table이 여기에서 작동합니다.

df = df.pivot_table(
      index='userid', columns='day', values=['x', 'y'])\ 
     .sort_index(axis=1, level=-1)\ 
     .swaplevel(0, 1, axis=1) 

df.columns = df.columns.map('_'.join) 

     monday_x monday_y tuesday_x tuesday_y 
userid           
user1   1   2   3   4 
user2   10  11   12   13 

필요하면 색인을 재설정하십시오. df = df.reset_index()을 사용하여 userid을 컬럼으로 얻으십시오.

+0

지연된 응답을 드려 죄송합니다. 나는 또한 pivot_table을 사용하여이 작업을 수행했습니다. 그러나 각각의 개별 열에 대해 하나의 테이블을 얻으려면 모두 결합해야합니다. 어쨌든 고마워, . – Avog