【问题标题】:TypeError when trying to save xarray to netcdf尝试将 xarray 保存到 netcdf 时出现 TypeError
【发布时间】:2020-05-18 03:11:37
【问题描述】:

请在这方面提供任何帮助。我有一个 xarray,它是使用 .to_xarray() 方法从 pandas 数据框创建的,具有以下形式:

<xarray.Dataset>
Dimensions:  (lat: 556, lon: 1438, time: 96)
Coordinates:
  * time     (time) datetime64[ns] 2005-01-01 2006-01-01 ... 2100-01-01
  * lat      (lat) float64 -55.38 -55.12 -54.88 -54.62 ... 82.88 83.12 83.38
  * lon      (lon) float64 -69.88 -69.62 -69.38 -69.12 ... -26.12 -24.38 -24.12
Data variables:
    1.0      (lat, lon, time) float32 nan nan nan nan nan ... nan nan nan nan
    2.0      (lat, lon, time) float32 nan nan nan nan nan ... nan nan nan nan
    3.0      (lat, lon, time) float32 nan nan nan nan nan ... nan nan nan nan
    4.0      (lat, lon, time) float32 nan nan nan nan nan ... nan nan nan nan
    5.0      (lat, lon, time) float32 nan nan nan nan nan ... nan nan nan nan
    6.0      (lat, lon, time) float32 nan nan nan nan nan ... nan nan nan nan
    7.0      (lat, lon, time) float32 nan nan nan nan nan ... nan nan nan nan

当我尝试使用 .to_netcdf() 保存它时,我收到以下错误:

TypeError: DataArray.name or Dataset key must be either a string or None for serialization to netCDF files

我尝试通过 ds_land[1.0].name = 'class_1' 等更改变量的名称,但这也会产生相同的错误。请问有什么想法吗?

【问题讨论】:

  • 您能否提供一个最小的工作示例来重现该错误?

标签: python netcdf python-xarray


【解决方案1】:

您需要在序列化之前使用rename() 将变量重命名为字符串,而不是在DataArray 上设置name 属性。这是因为variables names in netCDF must be strings

import xarray as xr
ds = xr.Dataset()
ds[1.0] = xr.DataArray([1, 2, 3])

ds[1.0].attrs['name'] = 'class_1'
ds.to_netcdf('testing.nc') # this fails, as you have seen

ds = ds.rename({1.0: 'class_1'})
ds.to_netcdf('testing2.nc') # this works

因此,将变量重命名为 '1.0' 也可以解决问题:

ds = xr.Dataset()
ds[1.0] = xr.DataArray([1, 2, 3])
ds = ds.rename({1.0: '1.0'})
ds.to_netcdf('testing3.nc') # this also works

顺便说一句,考虑到您是如何命名变量的,看起来它们作为另一个维度可能会更好,因此您有一个由latlontime、@987654331 标注的新变量@。

【讨论】:

    猜你喜欢
    • 2021-08-05
    • 2017-02-15
    • 2018-05-22
    • 1970-01-01
    • 2021-03-06
    • 2020-05-10
    • 2013-05-02
    • 2019-05-08
    相关资源
    最近更新 更多