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

已提前定义mean_cols仍触发未定义错误?DataFrame.query问题咨询

问题:明明已在调用df.query前创建了mean_cols变量,为何仍提示该变量未定义?

相关代码

def fl_base(df,file_name):
    columns = ['historic_odds_1','historic_odds_2','historic_odds_3','historic_odds_4','odds']
    mean_cols = df[columns].mean(axis=1)
    df = df.query(
        f"\
            (mean_cols > 0) and \
                ((@df['minute_traded']/mean_cols)*100 >= 1000) and \
                    (@df['minute_traded'] >= 1000)\
                        "
    ).reset_index(drop=True)
    return df

报错信息

name 'mean_cols' is not defined

原因及解决方法

df.query()的执行环境默认只能识别DataFrame自身的列名和全局作用域的变量,你定义的mean_cols是函数内部的局部变量,不在它的默认识别范围内。

要让df.query()访问到这个局部变量,需要给变量名加上@前缀,就像你对df['minute_traded']做的那样。修改后的代码如下:

def fl_base(df,file_name):
    columns = ['historic_odds_1','historic_odds_2','historic_odds_3','historic_odds_4','odds']
    mean_cols = df[columns].mean(axis=1)
    df = df.query(
        f"\
            (@mean_cols > 0) and \
                ((@df['minute_traded']/@mean_cols)*100 >= 1000) and \
                    (@df['minute_traded'] >= 1000)\
                        "
    ).reset_index(drop=True)
    return df

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:20:49