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

如何让Patsy公式识别含连字符的变量名而非减法运算

解决Patsy误解析带连字符列名的问题

哈哈,这个坑我踩过!Patsy的公式语法默认会把连字符当成减法运算符,所以你写的VOLT ~ B-NN会被它误读成VOLT ~ B - NN,找不到B变量太正常了。给你两个简单有效的解决办法:

  • 用反引号包裹变量名:这是最直接的方式,把带特殊字符的列名用反引号``包起来,Patsy就会把它当作完整的变量名处理,不会拆分解析。示例代码:

    import pandas as pd
    import statsmodels.formula.api as smf
    
    # 假设你的DataFrame是df
    model = smf.ols(formula='VOLT ~ `B-NN`', data=df).fit()
    
  • 使用Patsy的Q()函数:如果反引号的写法你觉得不够直观,还可以用Patsy专门提供的Q()函数(全称Quote),把变量名字符串传进去,明确告诉Patsy不要解析其中的特殊语法:

    model = smf.ols(formula='VOLT ~ Q("B-NN")', data=df).fit()
    

如果需要同时用到多个带连字符的变量(比如B-NN和B-IDW),两种方法都可以扩展使用:

# 反引号写法
model = smf.ols(formula='VOLT ~ `B-NN` + `B-IDW`', data=df).fit()

# Q()函数写法
model = smf.ols(formula='VOLT ~ Q("B-NN") + Q("B-IDW")', data=df).fit()

这两种方法都能完美保留你需要的含连字符列名,不会影响后续的下游流程~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:40:42