【发布时间】:2021-11-05 13:55:37
【问题描述】:
我在 .csv 文件中有 200 多个时间序列变量,并且想将所有变量写入 netCDF 文件。但我不知道为什么我不能在一个循环中做到这一点。伪数据代码如下:
数据生成
vars = ['one', 'two', 'three', 'four']
date = pd.date_range(start='2021-01-01', end='2021-01-12')
data_dict = {k: np.random.rand(12) for k in vars}
data = pd.DataFrame(data_dict, index=date)
创建具有维度的 netcdf 文件
try:
# just to be safe, make sure dataset is not already open.
ncfile.close()
except:
pass
ncfile = Dataset('test.nc', mode='w', format='NETCDF4_CLASSIC')
lat_dim = ncfile.createDimension('lat', 1)
lon_dim = ncfile.createDimension('lon', 1)
time_dim = ncfile.createDimension('time', None)
time = ncfile.createVariable('time', np.float64, ('time',))
time.units = 'Minutes since 2021-01-01 0'
time.long_name = 'time'
calendar = 'standard'
time[:] = date2num(
(pd.to_datetime(data.index)).to_pydatetime(),
units=time.units,
calendar=calendar
)
循环写入netcdf文件
for i, vname in enumerate(var):
vname = ncfile.createVariable(vname,np.float64,'time')
vname[:] = data[vname].values
我认为这里的问题是'vname',它是一个字符串。我试图将它转换为一个对象,但无法做到这一点。我不确定我是否错了。 任何帮助或建议将不胜感激
【问题讨论】:
标签: python-3.x netcdf python-xarray enumerate netcdf4