繁体   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