如何重命名一个字符串的xarray dataArray?

时间:2019-07-15 00:15:30

标签: python python-xarray hdf

我正在使用具有约130个数据变量的大型HDF4数据集。每个数据变量的名称是一个字符串,我想将它们重命名为1个字(例如,“ Surface pressure”更改为“ Surface_pressure”。由于它们是字符串,因此我无法使用大多数函数,例如dataArray。在哪里,我只能使用dataset ['dataArray_1']访问每个变量,这并不理想。我希望能够使用dataset.dataArray。

我尝试使用dataArray.rename,但没有任何运气。我已经复制并粘贴了以下错误。

In: data=('test.h4')
    DS=xr.open_dataset(data)

In: DS['Surface pressure']

Out: <xarray.DataArray 'Surface pressure' (Footprints: 25590)>
array([1006.09015, 1006.09015, 1006.09015, ...,  997.5478 ,  997.5478 ,
        997.5478 ], dtype=float32)
Dimensions without coordinates: Footprints
Attributes:
    units:        hectoPascal
    format:       F18.9
    valid_range:  [   0. 1100.]

In: DS.rename({'Surface pressure':'Surface_pressure'})

In: DS.Surface_pressure

Out: ---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-13-6b1398c52ba1> in <module>
----> 1 DS.Surface_pressure

/anaconda3/lib/python3.7/site-packages/xarray/core/common.py in __getattr__(self, name)
    177                     return source[name]
    178         raise AttributeError("%r object has no attribute %r" %
--> 179                              (type(self).__name__, name))
    180 
    181     def __setattr__(self, name, value):

AttributeError: 'Dataset' object has no attribute 'Surface_pressure'

我希望看到xarray.DataArray错误,我不确定接下来还要尝试什么。

1 个答案:

答案 0 :(得分:0)

Xarray的re_path(r"ajax/friend-request/send/(?P<pk>[0-9])/$", views.send_friend_request, name="user_send_request")返回一个 new 数据集对象,而不是修改现有的就位数据。因此,让它执行您想要的操作应该就像覆盖rename()变量一样简单,例如

DS

Python中一些简单的字符串操作应使直接将所有现有变量重命名为所需的形式,例如

DS = DS.rename({'Surface pressure':'Surface_pressure'})