Python 使用复合索引从数据帧中提取值的正确方法?
我有一个数据框,称之为当前数据。此数据帧是通过在另一个数据帧(当前数据)上运行统计函数生成的。它在“Method”和“Request.Name”列上有一个复合索引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上运行一系列统计函数,
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'.