在下面的多索引数据帧中,如何切片以便选择索引 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]
可能有效,但没有。
答案 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')
应该给您想要的结果。