如何索引和切片多索引熊猫数据框

时间:2021-03-11 04:09:40

标签: python pandas

在下面的多索引数据帧中,如何切片以便选择索引 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

我可以通过以下方式选择带有 sign == 1 的所有行:raw3.loc[(-1,)]。如何添加 csum_count == 8?.认为 raw3.loc[(-1,),'csum_count'==8] 可能有效,但没有。

2 个答案:

答案 0 :(得分:0)

您可以通过调用 DataFrame.index.get_level_values() 并将您想要切片的索引的名称(或级别)传递给它来过滤多个索引。除此之外,您还可以对其中一列添加条件。

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

答案 1 :(得分:0)

您可以对 DataFrame 使用 .query() 方法,并传递一个布尔字符串。

就您而言,raw3.query('sign == 1 and cumsum == 8') 应该给您想要的结果。