我想从MultiIndex
中完全删除一个级别
import pandas as pd
tuples = [(0, 100, 1000),(0, 100, 1001),(0, 100, 1002), (1, 101, 1001)]
index_3levels=pd.MultiIndex.from_tuples(tuples,names=["l1","l2","l3"])
print index_3levels.levels
[Int64Index([0, 1], dtype=int64), Int64Index([100, 101], dtype=int64), Int64Index([1000, 1001, 1002], dtype=int64)]
我想提取前两个级别,以实现:
print index_2levels
MultiIndex
[(0, 100), (1, 101)]
droplevel
降低级别,但保留重复项:
print index_3levels.droplevel("l3")
MultiIndex
[(0, 100), (0, 100), (0, 100), (1, 101)]
原则上我可以调用unique
来删除它们。然而,这似乎不是正确的做法。
有更直接的方法吗?
这可能是对
droplevel
的增强,可能是通过传递uniquify=True
这是另一种方法
首先创建一些数据
上述方法
我们把索引分成两个部分,l1和l2 因为这些是int64索引,所以对它们进行唯一化的速度更快
重新组装
总时间约270ms,加速效果不错。请注意,我认为顺序可能不同,但我认为np.repeate/np.tile的某些组合将起作用
相关问题 更多 >
编程相关推荐