如何解决NetCDF get_dims太多值无法解压缩
我正在使用NetCDF文件(.nc)-600 + MB。
import netCDF4
from netCDF4 import num2date
import numpy as np
import os
import pandas as pd
# Open netCDF4 file
file_location = '2m dewpoint temperature.nc'
f = netCDF4.Dataset(file_location)
为了将文件转换为CSV,我首先查找其属性
# Find the attributes
print(f.variables.keys())
Output: dict_keys(['longitude','latitude','expver','time','d2m'])
然后,提取变量并尝试获取尺寸
# Extract variable
d2m = f.variables['d2m']
# Get dimensions
time_dim,lat_dim,lon_dim = d2m.get_dims()
time_var = f.variables[time_dim.name]
times = num2date(time_var[:],time_var.units)
latitudes = f.variables[lat_dim.name][:]
longitudes = f.variables[lon_dim.name][:]
我遇到以下错误
time_dim,lat_dim,lon_dim = d2m.get_dims()
ValueError:太多值无法解包(预期3)
这里发生了什么,我应该如何解决?
编辑1
print(d2m.get_dims())
的输出是
(<class 'netCDF4._netCDF4.Dimension'>: name = 'time',size = 94750,<class 'netCDF4._netCDF4.Dimension'>: name = 'expver',size = 2,<class 'netCDF4._netCDF4.Dimension'>: name = 'latitude',size = 33,<class 'netCDF4._netCDF4.Dimension'>: name = 'longitude',size = 53)
编辑2
df.head()
for @RobertWilson's suggestion
解决方法
您似乎有3个以上的尺寸。结果,这将失败:
time_dim,lat_dim,lon_dim = d2m.get_dims()
您只需要检查d2m.get_dims()
给您的内容,然后修改该行即可。
一种更快的转换为csv的方法是使用xarray:
import xarray as xr
import pandas as pd
ds = xr.open_dataset(file_location)
df = ds.to_dataframe().reset_index()
# subset the dataframe etc.
df.to_csv(filename,index=False)
,
像@user2856 said一样,我得到了元组拆包代码期望的暗淡数量。
为了得到适量的暗淡,我跑了
print(d2m.get_dims())
输出为
(<class 'netCDF4._netCDF4.Dimension'>: name = 'time',size = 94750,<class 'netCDF4._netCDF4.Dimension'>: name = 'expver',size = 2,<class 'netCDF4._netCDF4.Dimension'>: name = 'latitude',size = 33,<class 'netCDF4._netCDF4.Dimension'>: name = 'longitude',size = 53)
因此,我刚刚调整了错误所在的行
time_dim,expver_dim,lon_dim = d2m.get_dims()
然后一切运行顺利,包括转换为.CSV。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。