我有一个xarray数据集,其中包含许多dataArrays。这些dataArrays中的每一个都有一个.attrs,其中包含一个有序的dict,其中包含每个dataArray的描述和单位。
我想循环遍历dataSet中的每个dataArray并打印出每个.attrs。
for ii in dataSet.data_vars:
print(ii)
将为我提供每个dataArray的名称。但是,当我尝试
时for ii in dataSet.data_vars:
print(ii.attrs)
我得到了AttributeError:' str'对象没有属性' attrs' 如果我尝试,
for ii in dataSet.data_vars:
print(dataSet.ii.attrs)
我得到了AttributeError:'数据集'对象没有属性' ii'
似乎python正试图阅读' ii'作为DataArray名称,而不是在ii下存储为字符串的实际dataArray名称。如何循环遍历所有dataArrays并打印出每个数据的[dataArray] .attrs?
答案 0 :(得分:3)
data_vars
是一个字典,您可以迭代键值对。
for varname, da in dataSet.data_vars.items():
print(da.attrs)
您最后一个示例也可以,但您需要使用ii
作为字典键:
for ii in dataSet.data_vars:
print(dataSet[ii].attrs)
注意,如果您使用的是最新版本的xarray,您还可以使用dataSet.info()
method打印所有变量/属性。