python - 使用复合索引从 DataFrame 中提取值的正确方法?
问题描述
我有一个数据框,称之为 current_data。该数据帧是通过在另一个数据帧 current_data_raw 上运行统计函数生成的。它在“Method”和“Request.Name”列上有一个复合索引
current_data = current_data_raw.groupby(['Name', 'Request.Method']).size().reset_index().set_index(['Name', 'Request.Method'])
然后我运行一堆统计函数来current_data_raw
添加新列current_data
然后我需要查询该数据框以获取特定的列值。我很想做类似的事情:
val = df['Request.Name' == some_name, 'Method' = some_method]['Average']
但是,这不起作用,我在上面尝试的变体也不起作用。 .xs
正在返回一个系列。我可以抓住系列中唯一的一行,但这似乎不合适。
解决方案
如果想要选择MultiIndex
可以按级别顺序使用元组,但这里没有指定索引名称,例如'Request.Name'
:
val = df.loc[(some_name, some_method), 'Average']
另一种方法是使用DataFrame.query
,但如果级别名称包含空格或.
有必要使用反引号:
val = df.query("`Request.Name`=='some_name' & `Request.Method`=='some_method'")['Average']
如果一个词级别的名称:
val = df.query("Name=='some_name' & Method=='some_method'")['Average']
推荐阅读
- docker - 如何在 ansible 中运行 docker 容器?
- javascript - 如果我将我的应用程序重定向到 Next JS 页面,我们可以提取 Next JS 页面中的标题吗?
- mongodb - 用于@BsonIgnore 的工件
- python - 模拟海洋表面波
- php - 如何在 Prestashop 中将付款费用添加到购物车?
- unity3d - 如何区分统一层次结构中的对象类型?
- configuration - 当工作刚刚挂起时,我在哪里可以找到 slurm 诊断信息?
- google-chrome - 有 ERR_SSL_PROTOCOL_ERROR NETFLIX 的解决方案吗
- cron - TYPO3 中的 Cronjob 失败 - 格式错误的解析器 URI - direct_mail
- python - NodeJS 中的 RabbitMQ 密码散列