CSV/XLSX转NetCDF(nc)文件时维度重塑导致变量创建失败问题求助
CSV/XLSX转NetCDF(nc)文件时维度重塑导致变量创建失败问题求助
各位好,我最近在尝试把CSV/XLSX格式的火灾排放数据转换成NetCDF(.nc)文件,遇到了维度匹配的问题,想请大家帮忙指点一下。
我的数据里包含date(日期)、longitude(经度)、latitude(纬度)和pm25(PM2.5浓度)字段,这些是多个火灾事件的排放记录,所以同一个日期会对应多个不同的经纬度点和对应的pm2.5值,不是规整的网格数据。
当我尝试用xarray创建pm25变量并指定维度、坐标时,弹出了如下错误:
Could not convert tuple of form (dims, data[, attrs, encodring])... to variable.
我明白问题出在pm25数组的形状和我指定的维度不匹配,需要重塑数组,但怎么调整都找不到合适的形状参数。我目前尝试的代码如下:
import pandas as pd import xarray as xr import numpy as np from datetime import datetime as dt from matplotlib import pyplot as plt # 读取数据 data= pd.read_excel('2020NEI_California.xlsx') # 提取去重后的坐标列表并排序 latitude = sorted(list(set(data['latitude']))) longitude = sorted(list(set(data['longitude']))) time = sorted(list(set(data['date']))) # 这里尝试重塑pm25数组,但不知道后面两个维度该填什么 pm25 = np.array(data['pm25']).reshape(19384, .., ..) # 创建xarray数据集 xrds= xr.Dataset( data_vars=dict( pm25=(["time", "latitude", "longitude"], pm25) ), coords=dict( longitude=longitude, latitude=latitude, time=time ) )
我现在的困惑是:因为数据不是每个时间点都覆盖所有经纬度网格,而是分散的点,这种情况下该如何正确构建符合NetCDF格式要求的xarray数据集呢?希望有经验的朋友能给我一些思路或者解决方案,谢谢大家!
备注:内容来源于stack exchange,提问作者Nafb
相关产品推荐
相关产品推荐

