我有一个大约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 循环遍历坐标列表中的每个坐标,提取每个坐标处的时间序列,并将其滚动到一个高的数据帧中。
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)
我非常感谢你们能提供的任何帮助或建议!
好吧,我想出了这个。事实证明,我需要先将我的数据子集加载到内存中,因为默认情况下,X阵列“延迟加载”到Dataset中。
这是我修改以使其正常工作的代码行:
swe_first = swe_sub.sel(time=swe_sub.time.dt.day == 1).persist()
下面是我发现对这个问题有帮助的链接:
https://examples.dask.org/xarray.html
我希望这也能帮助其他人!
我有许多坐标(大约20000),我需要从许多NetCDF文件中提取数据,每个文件大约有30000个时间步(未来的气候场景)。使用这里的解决方案效率不高,原因是每个i,j将“dsloc”转换为“dataframe”所花费的时间(请看下面的代码)。**可以从这里下载NetCDF文件示例** 结果是: 这意味着每个i、j需要大约9秒来处理。考虑到大量的坐标和netcdf文件以及大量的时间步长,我想知道是
我需要从全球网格中提取特定节点集的数据,这些节点由纬度/经度坐标给出(大约5000-10000)。这些数据是水力参数的时间序列,例如波高。 全球数据集是巨大的,所以它被分成许多NetCDF文件。每个NetCDF文件大约5GB,包含整个全球网格的数据,但只针对一个变量(例如波高)和一年(例如2020年)。假设我想在某个位置提取6个变量的完整时间序列(42年),我需要提取数据形式为6x42=252个N
我有海洋pH、o2等的全球4D NetCDF文件。每个文件有1个变量和4个维度(时间、经度、纬度和深度)。我希望从不包含NA的每个单元格的最底部深度提取数据。我尝试使用带有负超实验室的NCO的nks: 但是,这只为我提供了最深的箱(即-5700米深度箱)的数据,输出了海洋中所有较浅区域的NaN。有没有办法以类似的方式提取数据,但指定我想要每个单元格最深的非 NaN 值? 我能够使用 R、CDO 或
我有一个R代码,它从单个. nc4文件中提取每个月的每日值。我有49个netcdf文件。我想使用循环从所有这些文件中提取数据并将它们写入唯一的csv文件中。 我有一个文件的代码,但我需要多个文件的帮助。
我有一个如下所示的数据帧: 我需要提取lat=30.75和lon 76.25的行,对于我使用的行: 但这表明了这个错误:
我有一个数据框,比如说一些投资数据。我需要根据某些条件(比如说,U类型)从这个数据帧中提取数据。有许多可用的基金类型,我只需要提取与特定基金类型匹配的数据。 funding_type有风险、种子、天使、股权等价值。我只需要数据匹配资金类型比如种子和天使 我试着跟着 这里MF1是我的数据帧。这将提供与种子基金类型相关的所有数据 我需要的条件有点像 MF1[MF1['funding_round_typ