我今天刚开始使用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'
答案 0 :(得分:2)
assign_attrs
会返回具有给定属性的 new xarray.Dataset
。它旨在促进不会改变现有对象的xarray对象的链式操作。
如果您想更新数据集的属性,只需直接分配给ds.attrs
,或使用ds.attrs.update()
,例如,
ds.attrs = refdata