python - pandas 多索引退化

标签 python pandas

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

例如:

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

最佳答案

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

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

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

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

关于python - pandas 多索引退化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25725055/

相关文章:

python - SCons:单个 SConscript 文件中的不同 variant_dir

python - 从字典列表中获取值列表

Python:从 CSV 文件读取时如何排除行的特定部分

python - Pandas :在日期时间索引上合并数据帧

python - 预处理数据时 ValueError : Input contains NaN, 无穷大或对于 dtype ('float64' 的值太大)

python - 如何通过 Pandas 的出生日期获取年龄列?

python - 赋值只是将名称绑定(bind)到对象?

python - 如何在 Django 模板中获取字典键和值?

python - If 语句始终打印 (Python)

python - Pandas 中单个单元格中存在多个字符串导致的日期时间转换错误