簡體   English   中英

如何索引和切片多索引 pandas dataframe

[英]How to index and slice a multiindex pandas dataframe

在下面的多索引 dataframe 中,我如何對其進行切片以便我 select 行索引sign == 1 和列csum_count == 8

In [15]: raw3.head(20)
Out[15]:

                   csum_count  mean_return

sign cumsum

1    326              9        0.165
     854              9        0.081
     1346             9        0.055
     1440             9        0.157
     1554             9        0.069
     418              8        0.082
     578              8        0.119
     638              8        0.113
     896              8        0.076
     1480             8        0.059
     54               7        0.085
     446              7        0.120
     476              7        0.071
     484              7        0.094
     594              7        0.089
     622              7        0.069
     644              7        0.061
     1018             7        0.080
     1550             7        0.085
     1736             7        0.201

我可以通過以下方式 select 所有帶有sign == 1的行: raw3.loc[(-1,)] 如何添加csum_count == 8? . 認為raw3.loc[(-1,),'csum_count'==8]可能有效,但沒有。

您可以通過調用DataFrame.index.get_level_values()過濾多個索引,並將要切片的索引的名稱(或級別)傳遞給它。 除此之外,您還可以在其中一列上添加條件。

raw3[(raw3.index.get_level_values('sign') == 1) & (raw3[csum_count == 8])]

您可以對 DataFrame 使用 .query() 方法,並傳遞 boolean 字符串。

在你的情況下, raw3.query('sign == 1 and cumsum == 8')應該給你你想要的結果。

暫無
暫無

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

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