xarray StopIteration:在循环

时间:2018-06-12 10:42:10

标签: python python-xarray

尝试在xarray中使用groupby函数时,我收到StopIteration:错误。只有在尝试循环文件列表时才会出现错误 - 如果输入单个文件路径,则不会生成错误。我还尝试使用xr.open_mfdataset打开文件的完整目录,但这会产生同样的错误。

for path in in_files:
    ds = xr.open_dataset(path)
    ds['index'] = county_mask
    ds = ds.set_coords('index')
    ds = ds.where(ds['index'].isin(cotton_county_keys))
    ds.groupby('index').mean('stacked_lat_lon').to_dataframe().reset_index()

产生错误:

StopIteration                             Traceback (most recent call last)
<ipython-input-91-f26bf31efda5> in <module>()
      6     ds = ds.set_coords('index')
      7     ds = ds.where(ds['index'].isin(cotton_county_keys))
----> 8     ds.groupby('index').mean('stacked_lat_lon').to_dataframe().reset_index()

~\AppData\Local\Continuum\anaconda3\lib\site-packages\xarray\core\common.py in wrapped_func(self, dim, keep_attrs, skipna, **kwargs)
     52                 return self.reduce(func, dim, keep_attrs, skipna=skipna,
     53                                    numeric_only=numeric_only, allow_lazy=True,
---> 54                                    **kwargs)
     55         else:
     56             def wrapped_func(self, dim=None, keep_attrs=False, **kwargs):

~\AppData\Local\Continuum\anaconda3\lib\site-packages\xarray\core\groupby.py in reduce(self, func, dim, keep_attrs, **kwargs)
    652         def reduce_dataset(ds):
    653             return ds.reduce(func, dim, keep_attrs, **kwargs)
--> 654         return self.apply(reduce_dataset)
    655 
    656     def assign(self, **kwargs):

~\AppData\Local\Continuum\anaconda3\lib\site-packages\xarray\core\groupby.py in apply(self, func, **kwargs)
    607         kwargs.pop('shortcut', None)  # ignore shortcut if set (for now)
    608         applied = (func(ds, **kwargs) for ds in self._iter_grouped())
--> 609         return self._combine(applied)
    610 
    611     def _combine(self, applied):

~\AppData\Local\Continuum\anaconda3\lib\site-packages\xarray\core\groupby.py in _combine(self, applied)
    611     def _combine(self, applied):
    612         """Recombine the applied objects like the original."""
--> 613         applied_example, applied = peek_at(applied)
    614         coord, dim, positions = self._infer_concat_args(applied_example)
    615         combined = concat(applied, dim)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\xarray\core\utils.py in peek_at(iterable)
    113     """
    114     gen = iter(iterable)
--> 115     peek = next(gen)
    116     return peek, itertools.chain([peek], gen)
    117 

StopIteration: 

同样如此:

ds = xr.open_dataset(in_files[0])
ds['index'] = county_mask
ds = ds.set_coords('index')
ds = ds.where(ds['index'].isin(cotton_county_keys))
ds.groupby('index').mean('stacked_lat_lon').to_dataframe().reset_index()

然而,文件路径完美无缺,

path = r'V:\ARL\Weather\Product_Development\US_PRISM_DATA\daily_temp\PRISM_daily_temp_1993-01-08'

ds = xr.open_dataset(path)
ds['index'] = county_mask
ds = ds.set_coords('index')
ds = ds.where(ds['index'].isin(cotton_county_keys))
ds.groupby('index').mean('stacked_lat_lon').to_dataframe().reset_index()

0 个答案:

没有答案