gpt4 book ai didi

python - 识别 MultiIndex 的运行长度

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:26 25 4
gpt4 key购买 nike

给定一个像这样的 pandas MultiIndex:

pd.Index([['A', 'A', 'A', 'B', 'B', 'C'],
['W', 'W', 'X', 'X', 'Y', 'Z']])

确定每个级别的游程长度的有效方法是什么?我期待的结果是:

('Level 1',     # Under level 1
('A', 3), # A is repeated thrice
('B', 2), # followed by B, twice
('C', 1),), # and then by C, once
('Level 2', # Under level 2
('W', 2), # W is repeated twice
('X', 1), # X is split between A (once)
('X', 1), # ... and B (once)
('Y', 1), # followed by Y, once
('Z', 1), # and then by Z, once
)

顺便说一下,这与 Pandas 在以下情况下格式化 MultiIndex 的方式相同呈现为 HTML。但是,源 (core/format.py -HTMLFormatter._write_header) 涉及循环并且效率较低比我想要的。

最佳答案

这是另一种方法,这可能是最简单的方法并且很容易推广到更多维度:

idx = pd.Index([['A', 'A', 'A', 'B', 'B', 'C'],
['W', 'W', 'X', 'X', 'Y', 'Z']])

df = pd.DataFrame( np.ones(len(idx[0])), index=[idx[0],idx[1]] )

df.groupby(level=[0]).count()

0
A 3
B 2
C 1

df.groupby(level=[0,1]).count()

0
A W 2
X 1
B X 1
Y 1
C Z 1

关于python - 识别 MultiIndex 的运行长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29580160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com