如何在Pandas中迭代MultiIndex级别?

问题描述 投票:5回答:2

我经常有MultiIndex索引,我想迭代更高级别索引相等的组。它基本上看起来像

from random import choice
import pandas as pd
N = 100
df = pd.DataFrame([choice([1, 2, 3]) for _ in range(N)],
                  columns=["A"],
                  index=pd.MultiIndex.from_tuples([(choice("ab"), choice("cd"), choice("de")) 
                                                   for _ in range(N)]))

for idx in zip(df.index.get_level_values(0), df.index.get_level_values(1)):
    df_select = df.ix[idx]

有没有办法更整洁地进行for循环迭代?

python pandas dataframe multi-index
2个回答
7
投票

使用groupbydf_select视图的索引包括前两个级别值,但在其他方面与您的示例类似。

for idx, df_select in df.groupby(level=[0, 1]):
    ...

1
投票

除了groupby逻辑之外,你可以使用lambda函数,它的优点是不必指定级别数,即它将选择除最后一个级别之外的所有级别:

for idx in df.index.map(lambda x: x[:-1]):
 df_select=df.ix[idx]
© www.soinside.com 2019 - 2024. All rights reserved.