我想为数据帧创建一个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
答案 0 :(得分:1)
首先需要对MI进行排序,使其具有完整的lexsort深度:
In [11]: index = index.order()
In [12]: index.lexsort_depth
Out[12]: 7
目前它没有排序超过第二级(其中5是在4之前)。