【发布时间】:2020-10-22 09:58:28
【问题描述】:
我有一个这样的数据框:
d
a b c
a1 b1 c1 10
b2 c2 11
a2 b3 c3 12
b4 c4 1
a3 b5 c5 2
a、b 和c 是multi_index 列,我试图根据一个或多个索引列的值引用一些行。如何使用这些索引列的某种组合来过滤行?我尝试使用.loc,但没有得到我想要的结果:
理想的情况是传递一个包含我想要的索引值的列表,这样我就可以动态地传递我想要的参数。但在下面的示例中,它不起作用。
>>> x.loc[['a1', 'b1', 'c1']]
d
a b c
a1 b1 c1 10
b2 c2 11
我发现这行得通:
>>> x.loc['a1', 'b1', 'c1']
d 10
但是x.loc['a1', 'c1'] 返回错误。
毕竟,.loc 在处理 multi-index 值时是如何工作的?我没有找到其他问题回答这个问题(可能是因为我使用了错误的关键字,我不知道......)。
我的最终目标是使用多索引的列(有时不是所有列)的值并获取对应的行。
【问题讨论】:
-
要使您的第三个示例正常工作,您可以使用
x.loc['a1', :, 'c1']。 Pandas 无法猜测您要索引的级别,它使用基于位置的查找 -
x.loc[['a1','lalalala','a2']],会查找第一级多索引匹配~
-
谢谢!我现在明白了
标签: python pandas multi-index