2016-11-21 3 views
0

나는 pd.DataFrame에 대해 pd.read_table(path/to/file, index_col=[0,1])과 동등한 뭔가를 찾고 있습니다. 내가 자주 형식은 다음과 pd.DataFrames가 발생Pandas와 Python 3을 사용하여 기존 pd.DataFrame 객체에 대해 pd.MultiIndex를 만드는 방법은 무엇입니까?

:

# Index Data 
iters = 3*[1] + 3*[2] + 3*[3] 
clusters = 3*[1,2,3] 

# Recreate DataFrame 
DF_A = pd.DataFrame([iters, clusters], index = ["iteration", "cluster"]).T 
DF_B = pd.DataFrame(np.random.RandomState(0).normal(size=(100,9)), index = ["attr_%d"%_ for _ in range(100)]).T 
DF_concat = pd.concat([DF_A, DF_B], axis=1).set_index("iteration", drop=True) 
DF_concat.head() 

enter image description here

내가 Python에 이러한로드하면 내가 위에서 설명했지만처럼, 난 그냥 index_col=[0,1]을 할 것이라고는 어떻게 prexisting을 변환 할 수 있습니다 pd.DataFramepd.Indexpd.MultiIndex에 입력하십시오. 따라서 iteration은 외부 인덱스 레벨이고 cluster은 내부 인덱스 레벨입니까?

다음을 시도했지만 과제가 엉망이되었습니다.

DF_B.index = pd.MultiIndex(levels=[DF_concat["cluster"].index.tolist(), DF_concat["cluster"].tolist()], labels=[DF_concat["cluster"].index.tolist(), DF_concat["cluster"].tolist()], names=["iteration", "cluster"]) 
DF_B 

enter image description here

답변

1

이 방법에 대해 ..

DF_concat.set_index([DF_concat.index, 'cluster']) 
+0

난 당신이 '당신 동안 인덱스라고 할 수 몰랐 : 단지 내가 만든 간단한 예를 들어 반복 당 3이 있어야합니다 그것을 다시 설정하십시오. 감사! –