微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过 xarray DataArray 对象列表设置 Pandas DataFrame 列

如何解决通过 xarray DataArray 对象列表设置 Pandas DataFrame 列

我正在尝试将一些时间序列数据与 Pandas DataFrame 中的元数据相关联。 当我尝试使用 DataArray 对象列表在 DataFrame 中创建/设置 data 列时:

mydata['data'] = [da1,da2,...]

Python 似乎卡住了。

分配带有 DataArray 列表的列时的键盘中断显示此回溯:

Traceback (most recent call last):
  File "hatch_vs_cut.py",line 285,in <module>
    cut_data = load_antenna_cut_data(cut_dir,cut_expfile)
  File "hatch_vs_cut.py",line 172,in load_antenna_cut_data
    expinfo.loc[:,'data'] = data_list
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/pandas/core/indexing.py",line 671,in __setitem__
    self._setitem_with_indexer(indexer,value)
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/pandas/core/indexing.py",line 992,in _setitem_with_indexer
    elif np.ndim(value) == 2:
  File "<__array_function__ internals>",line 5,in ndim
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/numpy/core/fromnumeric.py",line 3072,in ndim
    return asarray(a).ndim
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/numpy/core/_asarray.py",line 85,in asarray
    return array(a,dtype,copy=False,order=order)
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/xarray/core/common.py",line 143,in _iter
    yield self[n]
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/xarray/core/dataarray.py",line 701,in __getitem__
    return self.isel(indexers=self._item_key_to_dict(key))
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/xarray/core/dataarray.py",line 1114,in isel
    coord_value = coord_value.isel(coord_indexers)
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/xarray/core/variable.py",line 1120,in isel
    return self[key]
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/xarray/core/variable.py",line 772,in __getitem__
    return self._finalize_indexing_result(dims,data)
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/xarray/core/variable.py",line 2454,in _finalize_indexing_result
    return Variable(dims,data,self._attrs,self._encoding)
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/xarray/core/variable.py",line 328,in __init__
    self._data = as_compatible_data(data,fastpath=fastpath)
  File "/home/user/anaconda3/envs/track/lib/python3.8/site-packages/xarray/core/variable.py",line 187,in as_compatible_data
    def as_compatible_data(data,fastpath=False):
KeyboardInterrupt

看起来 xarray 在试图在维度之间进行一些奇特的匹配时陷入困境。

但是,如果我将相同的数据取出到 xarray Dataset 对象中,似乎没有问题:

ds1 = <fold data from da1 into a xarray.Dataset>
...
mydata['data'] = [ds1,ds2,...]

有更好的解决方法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。