Я ищу что-то эквивалентное 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()
Если я загрузил их в Python
, я бы просто сделать index_col=[0,1]
, как я описал выше, но как я могу преобразовать prexisting pd.DataFrame
pd.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
Я не знал, что можно назвать индекс пока вы» установите его. Благодаря! –