问题描述
我正在使用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)
# 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
(<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。