2016-11-21 4 views
0

Я ищу что-то эквивалентное pd.read_table(path/to/file, index_col=[0,1]) для существующего pd.DataFrame.Как создать pd.MultiIndex для существующего объекта pd.DataFrame, используя Pandas и Python 3?

я часто сталкиваюсь pd.DataFrames, которые имеют следующий формат:

# 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.Index в pd.MultiIndex, так что iteration - это внешний индексный уровень, а cluster - внутренний уровень индекса?

Я пробовал следующее, но задания перепутались. Там должно быть только 3 на одной итерации для простого примера я сделал:

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

Я не знал, что можно назвать индекс пока вы» установите его. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^