【问题标题】:Variable 'lat' has conflicting _FillValue (nan) and missing_value (-9999.0). Cannot encode data变量 'lat' 有冲突的 _FillValue (nan) 和 missing_value (-9999.0)。无法编码数据
【发布时间】:2021-11-19 16:52:28
【问题描述】:

我尝试通过运行来保存xr.dataset,例如:

ds.to_netcdf('save/directory/filename.nc')

得到一个错误:

Variable 'lat' has conflicting _FillValue (nan) and missing_value (-9999.0). Cannot encode data.

我该如何解决这个错误?

【问题讨论】:

    标签: python-xarray


    【解决方案1】:

    那些可能是属性。您可以使用ds.lat.attrs 查看变量的属性。

    您可以像字典一样通过访问属性的元素来直接修改属性:

    ds.lat.attrs['missing_value'] = np.nan
    

    或删除其中一个

    del ds.lat.attrs['_FillValue']
    

    如果您的 data 实际上同时具有 NaN 和 -9999 作为填充值,并且您只想使用一个,您也可以屏蔽数据。我猜 -9999 被选择用于整数数据?

    对于整数数据,NaN 不是一个选项,所以我们将坚持使用 -9999,并以 32 位整数为例:

    ds['lat'] = ds['lat'].where(pd.notnull(ds['lat']), -9999).astype('int32')
    

    对于浮动,我们可以坚持使用np.nan

    ds['lat'] = ds['lat'].where(ds['lat'] != -9999)
    

    【讨论】:

    • 谢谢,但很抱歉我无法重现该错误,因此我不确定您的建议能否解决我的问题。当我遇到同样的问题时,我会重新访问。
    • 好的。如果您无法重现错误以确认这是否有用,那么这对网站来说不是一个有用的问题。请参阅本指南以帮助生成 minimal reproducible example 以获得下次的一些重要提示!
    • 感谢您提供的信息。我会记住的!
    猜你喜欢
    • 2016-05-18
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 2012-12-17
    • 2013-04-14
    • 1970-01-01
    • 2019-11-01
    相关资源
    最近更新 更多