使用 xarray 读取多个坐标

Jor*_*era 4 python-2.7 python-xarray

我使用 xarray 从 openDAP 服务器读取单点数据,然后将 xarray 对象转换为数据帧。这很好用。我想在一次调用中读取多个点,但我不知道这是最好的方法。

这是我用于单点的代码:

import pandas as pd
import xarray as xr

url = 'http://nomads.ncep.noaa.gov:9090/dods/gfs_0p25/gfs20161111/gfs_0p25_00z'
lats =  [40.1,40.5,42.3]
lons =  [1.02,1.24,1.84]
vars = ['dswrfsfc', 'tmp2m', 'pressfc']

ds = xr.open_dataset(url)

data_single  = ds.sel(lon=lons[0], lat=lats[0], method='nearest')    
ts_dataframe_single = data_single[vars].to_dataframe()
Run Code Online (Sandbox Code Playgroud)

为了阅读多个要点,我这样做:

data  = ds.sel(lon=lons, lat=lats, method='nearest')
ts_dataframe = data[vars].to_dataframe()
Run Code Online (Sandbox Code Playgroud)

这是输出data.coords

data.coords
Out[10]: 
Coordinates:
  * time     (time) datetime64[ns] 2016-11-11 2016-11-11T03:00:00 ...
  * lev      (lev) float64 1e+03 975.0 950.0 925.0 900.0 850.0 800.0 750.0 ...
  * lat      (lat) float64 40.0 40.5 42.25
  * lon      (lon) float64 1.0 1.25 1.75
Run Code Online (Sandbox Code Playgroud)

当我转换为数据帧时,生成的对象在时间戳中包含时间和坐标的混合。它看起来是这样的:

包含多个点的数据框

我的问题是:

  • 这是使用 xarray 检索多个点的最佳方法吗?
  • 如何从生成的数据帧的单个点提取数据?

提前致谢!

jha*_*man 5

我认为你想要sel_points而不是sel. 所以,像这样:

data  = ds.sel_points(lon=lons, lat=lats, method='nearest')
ts_dataframe = data[vars].to_dataframe()
Run Code Online (Sandbox Code Playgroud)