2016-08-10 3 views
1

mulilevel 인덱스의 이름 제거 : 나는 이름을 제거하려면 지금나는 mulitlevel DataFrame 생성

  Price 
Country England Germany  US 
sys dis 
23 0.8 300.0 300.0 800.0 
24 0.8 1600.0 600.0 600.0 
27 1.0 4000.0 4000.0 5500.0 
30 1.0 1000.0 3000.0 1000.0 

을 : 국가를하고, 0에서 인덱스를 추가를 ..

   Price 
    sys dis England Germany US 
    0 23 0.8 300.0 300.0 800.0 
    1 24 0.8 1600.0 600.0 600.0 
    2 27 1.0 4000.0 4000.0 5500.0 
    3 30 1.0 1000.0 3000.0 1000.0 

이를 내 코드 :

df = pd.DataFrame({'sys':[23,24,27,30],'dis': [0.8, 0.8, 1.0,1.0], 'Country':['US', 'England', 'US', 'Germany'], 'Price':[500, 1000, 1500, 2000]}) 


df = df.set_index(['sys','dis', 'Country']).unstack().fillna(0) 

어떻게 해결할 수 있습니까? 필자는 다단계 DataFrame에 대한 경험이별로 없습니다. 인덱스 컬럼

df.columns = df.columns.droplevel(1) 

답변

3

이 시도 :

df.reset_index() 
df.columns.names =[None, None] 


df.columns 
MultiIndex(levels=[[u'Price'], [u'England', u'Germany', u'US']], 
     labels=[[0, 0, 0], [0, 1, 2]], 
     names=[None, u'Country']) 
+0

df.columns.names = [None, None]을 올바르게 이해하고 있는지 잘 모르겠습니다. 다중 레벨 데이터 프레임에 사용됩니다. 두 단계의 Dataframe이 있기 때문에 None을 두 번 사용해야합니까? 나는 또한 가격 헤더를 떨어 뜨리고 싶다면 어떨까요? – Monica

+0

@Monica 편집보기 – Merlin

+0

나는 그것을 이해했다! 도와 줘서 고마워! :) – Monica

1

베스트 내가 지금 가지고 :

df.rename_axis([None, None], 1).reset_index() 

enter image description here

+0

df.columns = df.columns.droplevel (1)을 사용하면 헤더가 Price, Price, Price로 대체됩니다. 이름 바꾸기 기능을 사용할 수 있지만 어쩌면 더 똑똑한 방법이있을 수 있습니다. – Monica

+0

행운을 빈다. 때로는 필요한 것을 exacly 얻기 위해 몇 가지 추가 라인을 작성해야합니다 –

2

를 들어

df.reset_index(inplace=True) 

에 대한

+0

멋진 속임수 친구 –