熊猫MultiIndex变性

时间:2014-09-08 13:09:04

标签: python pandas

我想为数据帧创建一个lexsort-depth 7的多索引。但是,在索引的几个深度我只有相同的值。 Pandas multiindex构造函数排除具有相同值的构造函数。有什么方法可以保留它们吗?

例如:

import pandas as pd

labels = 
 [(0, 0, 5, 0, 1, 0, 0), (0, 0, 5, 0, 1, 0, 0), (0, 0, 5, 0, 1, 0, 0), 
 (0, 0, 5, 0, 2, 0, 0), (0, 0, 5, 0, 2, 0, 0), (0, 0, 5, 0, 2, 0, 0), 
 (0, 0, 5, 0, 3, 0, 0), (0, 0, 5, 0, 3, 0, 0), (0, 0, 5, 0, 3, 0, 0), 
 (0, 0, 5, 0, 0, 0, 0), (0, 0, 5, 0, 0, 0, 0), (0, 0, 5, 0, 0, 0, 0), 
 (0, 0, 4, 0, 1, 0, 0), (0, 0, 4, 0, 1, 0, 0), (0, 0, 4, 0, 1, 0, 0), 
 (0, 0, 4, 0, 2, 0, 0), (0, 0, 4, 0, 2, 0, 0), (0, 0, 4, 0, 2, 0, 0), 
 (0, 0, 4, 0, 3, 0, 0), (0, 0, 4, 0, 3, 0, 0)]

index = pd.MultiIndex.from_tuples(labels)
index.lexsort_depth
>>> 2        # what I want is 7 here

1 个答案:

答案 0 :(得分:1)

首先需要对MI进行排序,使其具有完整的lexsort深度:

In [11]: index = index.order()

In [12]: index.lexsort_depth
Out[12]: 7

目前它没有排序超过第二级(其中5是在4之前)。