首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将熊猫DataFrame网格化为多维X数组数据集?

问将熊猫DataFrame网格化为多维X数组数据集?
EN

Stack Overflow用户
提问于 2021-08-26 21:32:47
回答 1查看 186关注 0票数 0

有没有办法在不使用循环的情况下将“行格式”数据集网格化为xarray数据集?

具体地说,我想要一个数组,如果没有指定任何值,(lat,lon,time)网格中的所有值都是0。我知道pandas中的.to_xarray()方法(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_xarray.html),但这不会完全覆盖所需的坐标(经度、经度、时间)。玩具示例如下:

代码语言:javascript
复制
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)
代码语言:javascript
复制
# desired coordinates to grid onto:
lat = [0,1,2]
lon = [0,1,2]
time= [0,1,2]
代码语言:javascript
复制
# 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})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-27 08:26:19

xr.Dataset.from_dataframe的方法可以做到:

代码语言:javascript
复制
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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68945539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档