如何使用Pandas和Python 3为现有的pd.DataFrame对象创建pd.MultiIndex?

时间:2016-11-21 19:08:08

标签: python pandas indexing dataframe multi-index

我正在为现有pd.read_table(path/to/file, index_col=[0,1])寻找相当于pd.DataFrame的内容。

我经常遇到具有以下格式的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]但是如何将现有的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

enter image description here

1 个答案:

答案 0 :(得分:1)

这个怎么样..

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