2017-12-02 21 views
0

에 그룹화하여 여러 열로 그룹화 쌓인 열을 변환 그룹화를 열 이름으로 사용 하시겠습니까? 재 배열 있도록내가 GROUPBY 기능을 사용하여이 같은 것을 보는 내 dataframe를 조직 한 팬더

Compound  Sample  Concentration   x y 
1 Benzene  A    15      Ax Ay 
5 Benzene  B    20      Bx By 
6 Benzene  C    17      Cx Cy 
0 Toluene  A    23      Ax Ay 
4 Toluene  B    40      Bx By 
2 Xylene  A    70      Ax Ay 
3 Xylene  B    62      Bx By 
7 Xylene  C    55      Cx Cy 
8 Xylene  D    32      Dx Dy 

나는 복합으로 분류 : 나는 GROUPBY 기능을 사용 후에 내가 내 데이터는 다음과 같이하는 데 사용되는 인덱스를 분실 편집

Sample Benzene Toluene Xylene x y 
A   15  23   70  Ax Ay 
B   20  40   62  Bx By 
C   17  0   55  Cx Cy 
D   0   0   32  Dx Dy  

: 나는 이런 식으로 뭔가를 달성하고자하는 처음에 샘플로 정렬 된 모든 인덱스

+0

https://pandas.pydata.org/pandas- : 원본 데이터에서, 당신은 또한 당신이 GROUPBY에 한 일을 수행하고 한 단계에서 재 성형하는,이 작업을 수행 할 수 docs/stable/generated/pandas.DataFrame.unstack.html – Abhishek

답변

0

게시 내용을 토대로 인덱스에 어떤 열이 있는지 분명하지 않습니다. 그들 중 누구도 (당신이 df.reset_index()을 강제 할 수있는)이없는 경우에, 당신은 다음을 수행 할 수 이것이 당신의 출력과 일치하지 않음을

df.set_index(['Compound', 'Sample', 'x', 'y'], inplace = True) 
df = df['Concentration'] 
df = df.unstack(level = 0) 
df.reset_index(inplace = True) 

유일한 방법 것은 그 x와 y 열 이제 데이터의 왼쪽에 있습니다. 이러한 열은 샘플 문자에서 쉽게 만들 수 있으므로이 변환 후에 추가하는 것이 더 쉽습니다.

df = df['Concentration'].unstack(level = 0) 

을 다음 x와 y 열을 추가하여 그룹의 유일한 컬럼으로 당신에게 화합물 및 샘플 인덱스, 그리고 농도의 dataframe를 준 경우 즉, 당신은 다만 수있다.

편집 :

df2 = pd.pivot_table(df, index = ['Sample', 'x', 'y'], columns = 'Compound', values = 'Concentration') 
+0

groupby 함수는 as_index = False 옵션을 지정하지 않는 한 인덱스로 그룹화하는 열을 만듭니다. 컴파운드 이름이 모든 행에 표시되지 않는다는 사실은 그것이 인덱스의 일부라고 생각하게 만듭니다. –

+0

모든 열로 그룹화되었으므로 색인에 모든 값을 넣었을 수 있습니까? 어떻게 작동하는지 정확히 모르겠습니다. 나는 groupby 함수를 사용하기 전에 어떻게 보이는지 보여주기 위해 나의 질문을 편집했다. –