有没有办法在不使用循环的情况下将“行格式”数据集网格化为xarray数据集?
具体地说,我想要一个数组,如果没有指定任何值,(lat,lon,time)网格中的所有值都是0。我知道pandas中的.to_xarray()方法(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_xarray.html),但这不会完全覆盖所需的坐标(经度、经度、时间)。玩具示例如下:
import pandas as pd
import xarray as xr
# row data to be gridded
data = {'lats':[0,0,2], 'lons':[1,2,0], 'times':[0,1,2], 'values':[20,50,30]}
df_rows = pd.DataFrame(data)# desired coordinates to grid onto:
lat = [0,1,2]
lon = [0,1,2]
time= [0,1,2]# general form of the desired output Dataset
df_grid = xr.Dataset(data_vars={'data':(('lon','lat','time'), df_rows)},
coords={'lat': lat,
'lon': lon,
'time':time})发布于 2021-08-27 08:26:19
xr.Dataset.from_dataframe的方法可以做到:
import pandas as pd
import xarray as xr
# row data to be gridded
data = {"lat": [0, 0, 2], "lon": [1, 2, 0], "time": [0, 1, 2], "values": [20, 50, 30]}
df_rows = pd.DataFrame(data).set_index(["time", "lon", "lat"])
ds = xr.Dataset.from_dataframe(df_rows)ds是一个具有三维/坐标的xarray.Dataset,以及一个3x3x2数据块的变量values。
将time、lon和lat设置为df_rows中的索引非常重要,因为这些列将被理解为坐标。
请注意,此方法将使用未指定values的坐标元组的nan填充变量values。
https://stackoverflow.com/questions/68945539
复制相似问题