dataset.assign_attrs()例子?

时间:2018-06-17 01:27:36

标签: python-xarray

我今天刚开始使用xarray,到目前为止我对它的易用性印象非常深刻。我有一个关于数据集的assign_attrs()函数的问题。

我有一个我从pandas数据框创建的数据集。我试图在创建元数据属性之后为其分配元数据属性,但是当我在运行脚本后查看ds.attrs或ds.attrs.items()时,我似乎没有得到任何东西。

我传给它一本字典,但也许我没有正确地做到这一点?我尝试了各种传递dict的方法,但似乎没什么用。任何帮助或示例将不胜感激。示例代码和输出如下:

在:

df = pd.read_csv(readstr)
md = pr.plot_results.get_metadata(fp)

refdata = {'refLat': md['refLat'], 
           'refLon': md['refLon'], 
           'refAlt': md['refAlt'],
               'fw': md['FWversion']}

for k,v in refdata.items():
   print(k, v, "refdata kv")

ds = xr.Dataset.from_dataframe(df)
ds.assign_attrs(refdata)


print(ds.attrs, 'attributes')
print(ds.attrs.items(), 'items')
print(ds.attrs['refLon'])

OUT:

python_gnss_plot git:master ❯ ./start_plots.py                              
✹ ✭

refLat 37.77101988 refdata kv
refLon -122.40315123 refdata kv
refAlt -5.6120 refdata kv
fw v140-develop-2018060121-7 refdata kv
OrderedDict() attributes
odict_items([]) items
Exception in Tkinter callback
Traceback (most recent call last):
  Fil
  "/Library/Frameworks/Python.framework/Versions/3.6/
lib/python3.6/tkinter/__init__.py", 
line 1699, in __call__
return self.func(*args)
File "./start_plots.py", line 109, in execute_calc
    print(ds.attrs['refLon'])
KeyError: 'refLon'

1 个答案:

答案 0 :(得分:2)

assign_attrs会返回具有给定属性的 new xarray.Dataset。它旨在促进不会改变现有对象的xarray对象的链式操作。

如果您想更新数据集的属性,只需直接分配给ds.attrs,或使用ds.attrs.update(),例如,

ds.attrs = refdata