Python 使用复合索引从数据帧中提取值的正确方法?

Python 使用复合索引从数据帧中提取值的正确方法?,python,pandas,Python,Pandas,我有一个数据框,称之为当前数据。此数据帧是通过在另一个数据帧(当前数据)上运行统计函数生成的。它在“Method”和“Request.Name”列上有一个复合索引 current\u data=current\u data\u raw.groupby(['Name','Request.Method']).size().reset\u index().set\u index(['Name','Request.Method']) 然后我在current\u data\u raw上运行一系列统计函数,

我有一个数据框,称之为当前数据。此数据帧是通过在另一个数据帧(当前数据)上运行统计函数生成的。它在“Method”和“Request.Name”列上有一个复合索引

current\u data=current\u data\u raw.groupby(['Name','Request.Method']).size().reset\u index().set\u index(['Name','Request.Method'])

然后我在
current\u data\u raw
上运行一系列统计函数,向
current\u data

然后,我需要查询该数据帧以获取列的特定值。我想做一些事情,比如:

val=df['Request.Name'==some\u Name,'Method'=some\u Method]['Average']


然而,这不起作用,我在上面尝试过的各种方法也不起作用
.xs
正在返回一个序列。我可以抓取序列中唯一的一行,但这似乎不合适。

如果需要,可以在
多索引中选择
,可以按级别顺序使用tuple,但这里没有指定像
'Request.name'这样的索引名。

val = df.loc[(some_name, some_method), 'Average']
另一种方法是使用,但如果级别名称包含空格或
,则必须使用反勾号:

val = df.query("`Request.Name`=='some_name' & `Request.Method`=='some_method'")['Average']
如果一个单词级别为名称:

val = df.query("Name=='some_name' & Method=='some_method'")['Average']

谢谢,这很有效。是否有一个提供给
.loc
的名称,这样我就不需要保留级别的顺序?@user731842-不幸的是没有,那么唯一的方法就是使用
df.loc[(df.index.get_level_values('Request.Name')='some_Name')&(df.index.get_level_values('Request.Method')='some_Method'),'Average'.