【问题标题】:xarray dataset not reading longitude/latitude data in a way I can subsetxarray 数据集没有以我可以子集化的方式读取经度/纬度数据
【发布时间】:2022-07-28 16:21:24
【问题描述】:

嘿,我正在使用 NOAA 天气数据,我正在尝试选择经度和纬度变量。

我只想创建一个名为 lat 和 lon 的变量,它等于数据集中的纬度和经度值。当我打印数据集时,纬度/经度变量与基于数据的温度的“类型”不同。 (你可以在照片中看到)。有没有办法让这种“类型”的数据等于该数据集中的温度/时间数据?

我很抱歉解释不好,因为我感到困惑的部分原因是为什么它认为这些坐标变量与温度不同..

这是有关数据集的信息。我猜坐标是 float64

Coordinates:
    time        datetime64[ns] ...
    step        timedelta64[ns] ...
    surface     float64 ...
  * latitude    (latitude) float64 25.0 25.25 25.5 25.75 ... 54.5 54.75 55.0
  * longitude   (longitude) float64 235.0 235.2 235.5 ... 294.5 294.8 295.0
    valid_time  datetime64[ns] ...
Data variables:
    t           (latitude, longitude) float32 ...

我问这个问题的原因是因为我试图简单地根据纬度/经度对数据进行子集化

GFS3 = GFS3[(GFS3["longitude"]==280.25) & (GFS3["lat"]==40)]

但是当我运行它时,我得到了错误

The above exception was the direct cause of the following exception:

Traceback (most recent call last):

  File "C:\Users\kevin\.spyder-py3\temp.py", line 77, in <module>
    GFS3 = GFS3[(GFS3["longitude"]==280.25) & (GFS3["lat"]==40)]

  File "C:\Users\kevin\anaconda3\envs\flight\lib\site-packages\pandas\core\frame.py", line 3505, in __getitem__
    indexer = self.columns.get_loc(key)

  File "C:\Users\kevin\anaconda3\envs\flight\lib\site-packages\pandas\core\indexes\base.py", line 3623, in get_loc
    raise KeyError(key) from err

KeyError: 'longitude'

【问题讨论】:

  • 对不起 - 我真的不清楚你在问什么。您能否以代码 not images 的形式展示您尝试过的内容,并展示您看到的错误或行为以及您正在尝试做什么?

标签: python-xarray


【解决方案1】:

熊猫多重索引

据我所见,GFS3 = ds2.to_dataframe(dim_order=None) 返回一个带有 MultiIndex (latitude, longitude) 的数据帧(这就是为什么对于多个 longitude 值,您只看到一个 latitude 值)。

由于您是在 MultiIndex 而不是列上建立索引,因此语法不同 (doc):

GFS3.loc[(40, 280.25)]

应该返回你正在寻找的东西。

Xarray 数据集

我还建议直接使用xarray 的功能。

ds2.sel(latitude=40, longitude=280.25)

将返回仅包含所需位置的新数据集(您也可以使用 ds.isel(...) 进行基于索引的索引。

【讨论】:

    猜你喜欢
    • 2020-06-15
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    相关资源
    最近更新 更多