2012-06-14 8 views
14

먼저 재설정하지 않고 아래의 인덱스에 'd'을 어떻게 추가합니까?Pandas DataFrame 다시 설정하지 않고 인덱스에 열 추가

from pandas import DataFrame 
df = DataFrame({'a': range(6), 'b': range(6), 'c': range(6)}) 
df.set_index(['a','b'], inplace=True) 
df['d'] = range(6) 

# how do I set index to 'a b d' without having to reset it first? 
df.reset_index(['a','b','d'], inplace=True) 
df.set_index(['a','b','d'], inplace=True) 

df 

답변

30

df2.index = MultiIndex.from_tuples([(x,y,df2['d'].values[i]) for i,(x,y) in enumerate(df2.index.values)]) 

HTH 우리는 set_indexappend 옵션을 추가했습니다. 시도해 봐.

명령은 다음과 같습니다

df.set_index(['d'], append=True) 

(우리가 이미 인덱스에있는 한 [ 'a', 'b'가] 지정하지 않아도 우리는 그들에게 추가거야)

-1

내 버전의 pandas (0.8.1)에는 reset_index에 inplace 인수가 없습니다. 코드가 유효하지 않습니다. 다음과 같이하면 원하는 것을 얻을 수 있지만 좀 더 세련된 방법 일 수 있습니다. 그러나 reset_index를 피하는 이유에 대한 충분한 정보를 제공하지 못했습니다.

관련 문제