2016-10-18 3 views
1

에 행 값은의가 있다고 가정 해 봅시다 (아마도 그룹화) :일부 GROUPBY 작업 후 나는이 같은 dataframe이, 열

|Key |Subkey | Value | 
+----+-------+-------+ 
|foo1|bar1 |20  | 
|foo1|bar2 |10  | 
|foo1|bar3 |5  | 
|foo2|bar1 |50  | 
|foo2|bar2 |100 | 
|foo2|bar3 |50  | 
: 내가 다음이 것은이처럼 보이는 dataframe이

data = pd.DataFrame(columns=['Key', 'Subkey', 'Value']) 
data.loc[0] = ['foo1', 'bar1', 20] 
data.loc[1] = ['foo1', 'bar2', 10] 
data.loc[2] = ['foo1', 'bar3', 5] 
data.loc[3] = ['foo2', 'bar1', 50] 
data.loc[4] = ['foo2', 'bar2', 100] 
data.loc[5] = ['foo2', 'bar3', 50] 

하위 프레임이 위의 그룹화 된 프레임과 동일한 값을 포함하는 새로운 열인 새로운 데이터 프레임을 얻고 싶습니다.

|Key |bar1 |bar2 |bar3 | 
+----+-----+------+------+ 
|foo1| 20 | 10 | 5 | 
|foo2| 50 | 100 | 50 | 

한 줄짜리 해결책이 있습니까? 아니면 프로그래밍 방식으로 데이터 프레임을 변환해야합니까?

답변

2

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

print (data.pivot(index='Key', columns='Subkey', values='Value')) 
Subkey bar1 bar2 bar3 
Key      
foo1 20.0 10.0 5.0 
foo2 50.0 100.0 50.0 

그런 다음 당신이 int, reset_indexfloat 값을 캐스팅하고 열 이름 Subkey 제거 할 수 있습니다

print (data.pivot(index='Key', columns='Subkey', values='Value') 
      .astype(int) 
      .reset_index() 
      .rename_axis(None, axis=1)) 

    Key bar1 bar2 bar3 
0 foo1 20 10  5 
1 foo2 50 100 50