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

如何在xarray中选择带连字符字符串索引的坐标值?

解决PyPSA+Linopy中xarray变量筛选的语法错误

问题场景

使用PyPSA搭配Linopy后端时,得到如下xarray变量对象:

Variable 'Link-p_nom':
----------------------

Variable labels:
array([ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
       26, 27, 28])
Coordinates:
  * Link-ext  (Link-ext) object 'BE0 0 H2 Electrolysis' ... 'BE0 4 battery di...
Attributes:
    binary:   False

尝试用常规xarray方法筛选单个值时:

vars_link.sel(Link-ext="BE0 0 H2 Electrolysis")

触发语法错误:

vars_link.sel(Link-ext="BE0 0 H2 Electrolysis")
                  ^^^^^^^^^
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

错误原因

Python不允许函数的关键字参数名包含连字符-,代码里的Link-ext=会被解释器误认为是Link - ext = ...的减法表达式,从而抛出语法错误。

解决方法

有两种可行的方式实现筛选:

  • 方式一:传入字典参数
    直接把坐标名和对应筛选值组成字典,作为sel方法的参数:

    vars_link.sel({"Link-ext": "BE0 0 H2 Electrolysis"})
    
  • 方式二:通过字典解包传递关键字参数
    把带连字符的坐标名放在字典里,用**解包后传递给sel:

    vars_link.sel(**{"Link-ext": "BE0 0 H2 Electrolysis"})
    

如果需要筛选多个值,只需把值改为列表即可:

vars_link.sel({"Link-ext": ["BE0 0 H2 Electrolysis", "BE0 4 battery di..."]})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:35:20