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

xArray: reindex_like(method='nearest') TypeError: 不支持的操作数类型 -: 'str' 和 'str'

如何解决xArray: reindex_like(method='nearest') TypeError: 不支持的操作数类型 -: 'str' 和 'str'

我有两个 xArray 数据数组,它们由 datetime64 索引并包含一个功能一个包含单个字符串的列表。它们的长度不同,我想重新索引一个以匹配另一个的索引。但是,使用 'nearest' 填充方法调用 reindex_like 会在底层 Pandas reindex_like 函数中引发错误(TypeError:不支持的操作数类型 -:'str' 和 'str')。这是完整的跟踪:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-100-a93735b2e55d> in <module>()
----> 1 b_dataarray.reindex_like(d_dataarray,method='nearest')

7 frames
/usr/local/lib/python3.7/dist-packages/xarray/core/dataarray.py in reindex_like(self,other,method,tolerance,copy,fill_value)
   1235             tolerance=tolerance,1236             copy=copy,-> 1237             fill_value=fill_value,1238         )
   1239 

/usr/local/lib/python3.7/dist-packages/xarray/core/dataarray.py in reindex(self,indexers,fill_value,**indexers_kwargs)
   1298             tolerance=tolerance,1299             copy=copy,-> 1300             fill_value=fill_value,1301         )
   1302         return self._from_temp_dataset(ds)

/usr/local/lib/python3.7/dist-packages/xarray/core/dataset.py in reindex(self,**indexers_kwargs)
   2495             fill_value,2496             sparse=False,-> 2497             **indexers_kwargs,2498         )
   2499 

/usr/local/lib/python3.7/dist-packages/xarray/core/dataset.py in _reindex(self,sparse,**indexers_kwargs)
   2526             copy=copy,2527             fill_value=fill_value,-> 2528             sparse=sparse,2529         )
   2530         coord_names = set(self._coord_names)

/usr/local/lib/python3.7/dist-packages/xarray/core/alignment.py in reindex_variables(variables,sizes,indexes,sparse)
    550                 )
    551 
--> 552             int_indexer = get_indexer_nd(index,target,tolerance)
    553 
    554             # We uses negative values from get_indexer_nd to signify

/usr/local/lib/python3.7/dist-packages/xarray/core/indexing.py in get_indexer_nd(index,labels,tolerance)
    101     """
    102     flat_labels = np.ravel(labels)
--> 103     flat_indexer = index.get_indexer(flat_labels,method=method,tolerance=tolerance)
    104     indexer = flat_indexer.reshape(labels.shape)
    105     return indexer

/usr/local/lib/python3.7/dist-packages/pandas/core/indexes/base.py in get_indexer(self,limit,tolerance)
   2994             indexer = self._get_fill_indexer(target,tolerance)
   2995         elif method == "nearest":
-> 2996             indexer = self._get_nearest_indexer(target,tolerance)
   2997         else:
   2998             if tolerance is not None:

/usr/local/lib/python3.7/dist-packages/pandas/core/indexes/base.py in _get_nearest_indexer(self,tolerance)
   3080 
   3081         target_values = target._values
-> 3082         left_distances = np.abs(self._values[left_indexer] - target_values)
   3083         right_distances = np.abs(self._values[right_indexer] - target_values)
   3084 

TypeError: unsupported operand type(s) for -: 'str' and 'str'

看起来它是在 Pandas 确定要填充的最近索引的地方抛出的。但是,当数据数组的索引为 datetime64 时,我对为什么它试图减去两个字符串感到困惑。我进行了仔细检查以确保任一数据数组的索引中都没有错误的字符串,并且我可以确认它们都是 datetime64。也许 Pandas 错误地比较了数据数组的数据值而不是日期时间索引?

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