簡體   English   中英

如何在Pandas中迭代MultiIndex級別?

[英]How to iterate over MultiIndex levels in Pandas?

我經常有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循環迭代?

使用groupby df_select視圖的索引包括前兩個級別值,但在其他方面與您的示例類似。

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

除了groupby邏輯之外,你可以使用lambda函數,它的優點是不必指定級別數,即它將選擇除最后一個級別之外的所有級別:

for idx in df.index.map(lambda x: x[:-1]):
 df_select=df.ix[idx]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM