2017-12-01 12 views
2

다중 인덱스 데이터 프레임을 사용하여 6 개의 값과 2 개의 a, b 및 c 열에 X를 추가하고 싶습니다. Y.다중 인덱스 데이터 프레임에서 인덱스를 추가/삭제하는 방법

import pandas as pd, numpy as np 

np.arrays = [["one", "one", "one", "two", "two", "two"], ["a", "b", "c", "a", "b", "c"]] 

df = pd.DataFrame(np.random.randn(6,2), 
       index = pd.MultiIndex.from_tuples(list(zip(*np.arrays))), 
      columns = ["X", "Y"]) 
df = round(abs(df), 3) 
df 

       X  Y 
one  a 1.521 0.048 
     b 1.595 1.783 
     c 0.286 1.042 
two  a 1.480 1.071 
     b 0.807 1.058 
     c 1.730 1.233 

내가 좋아하는 것입니다 :

또한
    X  Y 
    one  a 1.521 0.048 
      b 1.595 1.783 
      c 0.286 1.042 
    two  a 1.480 1.071 
      b 0.807 1.058 
      c 1.730 1.233 
    three a 1.2  5.5 
      b 4.2  2.2 
      c 7.8  3.4 

, 어떻게 인덱스를 삭제합니까? 나는 다음과 같은 코드를했는데, 그것은 AttributeError 주었다 delitem

del df.loc["one"] 

를 어떤 도움이 좋지 않을까.

답변

1

한 가지 방법 사용 pd.concat 즉

idx = pd.MultiIndex.from_tuples(list(zip(['three']*3,list('abc')))) 
new = pd.DataFrame(np.random.randn(3,2), index=idx, columns= df.columns) 
new_df = pd.concat([df,new]) 

       X   Y 
one a 0.270000 0.299000 
     b 0.644000 0.073000 
     c 1.224000 0.656000 
two a 0.202000 0.097000 
     b 2.750000 0.373000 
     c 0.421000 0.939000 
three a 1.392999 -0.870480 
     b -1.899386 -0.249068 
     c -0.609149 0.164459 

및 사용 강하를 삭제

확실히 작동하지만 아마도 참여 '안양이 더 간단 뭔가를 기대했다

new_df = new_df.drop('one',level=0) 
+0

감사 바라 스, 즉 .loc [ "one"]. values'. 더 간단할수록 좋습니다. 아직도, 확실히이 솔루션을 주셔서 감사합니다. – MichaelRSF