2016-11-11 19 views
1

xarrayを使用してopenDAPサーバーからシングルポイントデータを読み込み、次にxarrayオブジェクトをdataframeに変換します。これは正常に動作します。 1回のコールで複数のポイントを読んでみたいと思いますが、そうするには最良の方法はありません。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() 

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

そして、これは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 

データフレームに変換すると、結果のオブジェクトには時間とコーディネーションが混在していますタイムスタンプでates。

dataframe containg multiple points

私の質問は次のとおりです:これは、それがどのように見えるかです

  • これはxarrayで複数のポイントを取得するための最良の方法ですか?
  • 結果のデータフレームの1点からデータを抽出するにはどうすればよいですか?

ありがとうございます!

答えて

3

sel_pointsの代わりにselとしたいと思います。したがって、このような何か:

data = ds.sel_points(lon=lons, lat=lats, method='nearest') 
ts_dataframe = data[vars].to_dataframe() 
+0

ありがとう@jhamman、このメソッドは仕事を行う必要があります。問題は、コンピュータの制御が緩くなるまで、 'data = ds.sel_points(lon = lons、lat = lats、method = 'nearest')コマンドを実行するとコンピュータが思考を開始し、RAMのメモリ使用量が上昇することです。それは普通ですか?私は何か間違っているのですか? –

1

もう一つの方法は、

data = ds.sel(lat=slice(40.1,42.3), lon=slice(1.02,1.84))

をスライスされるだろう。しかし、あなたはあなたが尋ねたよりも多くのポイントを得ます。しかし、それは速いです。

関連する問題