簡體   English   中英

簡單的熊貓MultiIndex切片

[英]Simple pandas MultiIndex slicing

我有以下DataFrame

df_1 = DataFrame({
        "alpha" : [1,1,1,2,2,2,3,3,3] ,
        "beta" : [3,4,5,3,4,5,3,4,5] ,
        "val_1" : ["x", "y" , "z", "w", "a", "b", "v1" , "v2" , "v3" ] ,
        "val_2" : ["z1", "z2" , "z3", "w1", "w2", "w3" , "zz1" , "zz2" , "zz3" ]
    })
df_1.set_index(["alpha", "beta"], inplace=True)

我試圖選擇以下突出顯示的行:

在此輸入圖像描述

也就是說, beta每一行都是3或5。

我已多次瀏覽pandas文檔,但無法找到解決方法。 我最接近我認為必須回答的是:

df_1.xs((3,5), level="beta", drop_level=False)

現在哪個失敗了。 得到這個的正確索引/切片方法是什么?

您可以使用DF.query()方法根據指定的值進行子集化:

df_1.query('beta == 3 or beta == 5')  # More succintly : df_1.query('beta == [3,5]')

在此輸入圖像描述

另一種選擇是使用get_level_valuesisin構造邏輯系列索引:

df_1[df_1.index.get_level_values(1).isin([3,5])]

在此輸入圖像描述

您可以使用pd.IndexSlice 文檔中有一個非常類似的例子

df_1.loc[pd.IndexSlice[:, [3,5]], :]


           val_1 val_2
alpha beta            
1     3        x    z1
      5        z    z3
2     3        w    w1
      5        b    w3
3     3       v1   zz1
      5       v3   zz3

暫無
暫無

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

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