已提前定义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
相关产品推荐
相关产品推荐

