You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pd.query中是否存在可指代当前调用DataFrame的占位符?

问题解答

你要的占位符在pandas 0.23.0及以上版本中已内置支持,名称为@__self__,可直接在query/eval表达式中用于指代当前调用方法的DataFrame对象。

针对你给出的示例,直接把代码中的PLACEHOLDER替换为@__self__即可实现需求,完整可运行代码如下:

import pandas as pd
import numpy as np

# 构造示例多层列索引DataFrame
df = pd.DataFrame(
    data=np.arange(20).reshape(5, 4),
    columns=pd.MultiIndex.from_product([['A', 'B'], ['x', 'y']])
)

# 无需定义临时变量,直接用@__self__指代切片生成的未命名DataFrame
filtered_df = df.loc[:, (slice(None), 'y')].query('(@__self__ > 15).any(axis=1)')
print(filtered_df)

运行后输出结果为:

A   B
    y   y
4  17  19

注意事项

  • 使用时必须添加@前缀,否则pandas会将__self__识别为列名,抛出找不到对应列的报错
  • 该占位符同时适用于pd.DataFrame.eval()方法,使用逻辑完全一致
  • 链式调用场景下使用该占位符可以避免定义大量临时变量,有效简化代码

内容的提问来源于stack exchange,提问作者zeawoas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:36:02