使用Xarray将netCDF文件中的数据提取到一个高大的DataFrame中的有效方法

杰夫·柯德普莱姆

我有大约350个坐标的列表,这些坐标是指定区域内的坐标,我想使用Xarray从netCDF文件中提取这些坐标。如果相关,我正在尝试从特定的地表模型中提取SWE(雪水当量)数据。

我的问题是,此for循环永远需要遍历列表中的每个项目并获取相关的时间序列数据。也许在某种程度上这是不可避免的,因为我实际上必须从netCDF文件中为每个配偶加载数据。我需要帮助的是以任何可能的方式加速代码。目前,这需要很长时间才能运行,需要3个小时以上,而且计算起来更加精确。

这是我到目前为止所做的一切:

import xarray as xr
import numpy as np
import pandas as pd
from datetime import datetime as dt

1)首先,打开所有文件(1915-2011年的每日数据)。

df = xr.open_mfdataset(r'C:\temp\*.nc',combine='by_coords')

2)将我的位置缩小到美国本土内的一个较小的盒子

swe_sub = df.swe.sel(lon=slice(246.695, 251), lat=slice(33.189, 35.666))

3)我只想提取每个月的第一个每日价值,这也缩小了时间序列。

swe_first = swe_sub.sel(time=swe_sub.time.dt.day == 1)

现在,我想加载我的坐标列表(恰好在Excel文件中)。

coord = pd.read_excel(r'C:\Documents\Coordinate_List.xlsx')
print(coord)
lat = coord['Lat']
lon = coord['Lon']
lon = 360+lon
name = coord['OBJECTID']

以下for循环遍历我的坐标列表中的每个坐标,提取每个坐标处的时间序列,并将其滚动到一个高的DataFrame中。

Newdf = pd.DataFrame([])
for i,j,k in zip(lat,lon,name):
    dsloc = swe_first.sel(lat=i,lon=j,method='nearest')
    DT=dsloc.to_dataframe()

    # Insert the name of the station with preferred column title:
    DT.insert(loc=0,column="Station",value=k)
    Newdf=Newdf.append(DT,sort=True)

非常感谢您提供的任何帮助或建议!

杰夫·柯德普莱姆

好吧,我想出了这个。原来我需要先将数据子集加载到内存中,因为默认情况下Xarray会将数据集“延迟加载”到Dataset中。

这是我为了使其正常工作而修改的代码行:

swe_first = swe_sub.sel(time=swe_sub.time.dt.day == 1).persist()

这是我发现对此问题有帮助的链接:

https://examples.dask.org/xarray.html

我希望这也能帮助其他人!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我有很多netcdf文件,如何使用xarray将所有文件上传到一个python笔记本中?

来自分类Dev

如何将两个.txt文件中的数据提取到一个新的.txt文件中?

来自分类Dev

将Android光标(sqlite)提取到要在AlertDialog.Builder中使用的数组中的最有效方法?

来自分类Dev

有没有一种方法可以将指定的表快速提取到另一个HDF5文件中?

来自分类Dev

如何将一个文件中的字符串提取到多个文件中

来自分类Dev

使用dataframe.loc来将信息从一个数据框调用到另一数据框的更有效方法

来自分类Dev

使用另一个netcdf文件将nan值填充到netcdf文件中

来自分类Dev

使用一个数据框中的最后一个有效数据索引选择另一个数据框中的数据

来自分类Dev

如何使用beautifulsoup将具有多个子节点的父节点和子节点信息提取到一个数据帧中?

来自分类Dev

将 DataSet 的内容提取到一个对象中

来自分类Dev

如何将文本的某些部分提取到另一个文件中?

来自分类Dev

将许多压缩文件夹的内容提取到一个目录中

来自分类Dev

如何使用 Selenium 将数据行提取到 DataFrame 中

来自分类Dev

将数百个数据文件组合到单个主DataFrame中的有效方法是什么?

来自分类Dev

Fedora终端:将多个文件夹中的单个文件提取到一个文件夹中?

来自分类Dev

将具有多个工作表的多个xlsx文件读取到一个R数据帧中

来自分类Dev

从第一列与另一个文件匹配的文件中提取行的更有效方法

来自分类Dev

如何一次将多个文件夹中存在的所有tar.gz文件提取到另一个目录?

来自分类Dev

如何将多个散列合并到一个有效的JSON文件中?

来自分类Dev

将perl文件中的前两个字符提取到另一个文件中

来自分类Dev

将数据从一个表移动到多个表的有效方法

来自分类Dev

linq从基于另一个表的表中获取数据的更有效方法?

来自分类Dev

grep / awk基本帮助-将包含术语列表的所有行从一个文件提取到单独的文件中

来自分类Dev

使用 Python 将多个 URL 中的不同变量抓取到一个 CSV 文件中

来自分类Dev

如何在pyspark提取到Azure Databricks中的数据帧的一个文件中读取多个嵌套的json对象?

来自分类Dev

将数据从文件提取到另一个文件

来自分类Dev

如何比使用unlist方法更有效地将嵌套列表展平到一个列表中?

来自分类Dev

使用批处理文件将数据从一个文本文件提取到另一个文本文件

来自分类Dev

将大量未清理的数据有效地读取到R中

Related 相关文章

  1. 1

    我有很多netcdf文件,如何使用xarray将所有文件上传到一个python笔记本中?

  2. 2

    如何将两个.txt文件中的数据提取到一个新的.txt文件中?

  3. 3

    将Android光标(sqlite)提取到要在AlertDialog.Builder中使用的数组中的最有效方法?

  4. 4

    有没有一种方法可以将指定的表快速提取到另一个HDF5文件中?

  5. 5

    如何将一个文件中的字符串提取到多个文件中

  6. 6

    使用dataframe.loc来将信息从一个数据框调用到另一数据框的更有效方法

  7. 7

    使用另一个netcdf文件将nan值填充到netcdf文件中

  8. 8

    使用一个数据框中的最后一个有效数据索引选择另一个数据框中的数据

  9. 9

    如何使用beautifulsoup将具有多个子节点的父节点和子节点信息提取到一个数据帧中?

  10. 10

    将 DataSet 的内容提取到一个对象中

  11. 11

    如何将文本的某些部分提取到另一个文件中?

  12. 12

    将许多压缩文件夹的内容提取到一个目录中

  13. 13

    如何使用 Selenium 将数据行提取到 DataFrame 中

  14. 14

    将数百个数据文件组合到单个主DataFrame中的有效方法是什么?

  15. 15

    Fedora终端:将多个文件夹中的单个文件提取到一个文件夹中?

  16. 16

    将具有多个工作表的多个xlsx文件读取到一个R数据帧中

  17. 17

    从第一列与另一个文件匹配的文件中提取行的更有效方法

  18. 18

    如何一次将多个文件夹中存在的所有tar.gz文件提取到另一个目录?

  19. 19

    如何将多个散列合并到一个有效的JSON文件中?

  20. 20

    将perl文件中的前两个字符提取到另一个文件中

  21. 21

    将数据从一个表移动到多个表的有效方法

  22. 22

    linq从基于另一个表的表中获取数据的更有效方法?

  23. 23

    grep / awk基本帮助-将包含术语列表的所有行从一个文件提取到单独的文件中

  24. 24

    使用 Python 将多个 URL 中的不同变量抓取到一个 CSV 文件中

  25. 25

    如何在pyspark提取到Azure Databricks中的数据帧的一个文件中读取多个嵌套的json对象?

  26. 26

    将数据从文件提取到另一个文件

  27. 27

    如何比使用unlist方法更有效地将嵌套列表展平到一个列表中?

  28. 28

    使用批处理文件将数据从一个文本文件提取到另一个文本文件

  29. 29

    将大量未清理的数据有效地读取到R中

热门标签

归档