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

Xarray按经度范围筛选报错:NameError: name 'lon' is not defined

正确的经度筛选方法

你遇到的NameError是因为sel()方法仅支持标签匹配,不能直接使用lon>-4这类比较表达式——这里的lon是Xarray数据集里的坐标变量,不是Python全局变量,所以会提示未定义。

下面是几种可行的解决方法:

方法1:用sel()结合slice(推荐,高效简洁)

如果你的经度坐标是有序排列的(绝大多数NetCDF气象/地理数据都是如此),直接在sel()中用slice指定范围即可:

import datetime
# 一步完成时间+经度筛选
data_9 = ds.sel(time=datetime.time(9), lon=slice(-4, 44))

方法2:用where()处理复杂条件

如果需要保留原维度(不符合条件的位置设为NaN),或者经度坐标无序,用where():

import datetime
data_9 = ds.sel(time=datetime.time(9)).where(
    (ds.lon > -4) & (ds.lon < 44),  # 用ds.lon引用数据集内的经度变量
    drop=True  # 可选:删除全为NaN的维度,精简结果
)

注意:多个条件要用&连接,且每个条件要加括号。

方法3:用query()实现类SQL筛选

如果习惯SQL风格的语法,可以用query()(需要依赖pandas):

import datetime
data_9 = ds.sel(time=datetime.time(9)).query('lon > -4 and lon < 44')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:10:26