Python 是否可以附加到xarray.Dataset?
我一直在使用Python 是否可以附加到xarray.Dataset?,python,numpy,pandas,python-xarray,Python,Numpy,Pandas,Python Xarray,我一直在使用.append()方法连接pandas中的两个表(具有相同的字段)。不幸的是,该方法在xarray中不存在,有其他方法吗?您可以使用.concat或merge() Xarray没有append方法,因为它的数据结构构建在NumPy的不可调整大小的数组之上,所以我们不能在不复制整个数组的情况下追加新元素。因此,我们不实现append方法。相反,您应该使用 一种常见模式是在列表中累积Dataset/DataArray对象,并在末尾连接一次: datasets = [] for examp
.append()
方法连接pandas中的两个表(具有相同的字段)。不幸的是,该方法在xarray
中不存在,有其他方法吗?您可以使用.concat
或merge()
Xarray没有append方法,因为它的数据结构构建在NumPy的不可调整大小的数组之上,所以我们不能在不复制整个数组的情况下追加新元素。因此,我们不实现append
方法。相反,您应该使用
一种常见模式是在列表中累积Dataset/DataArray对象,并在末尾连接一次:
datasets = []
for example in examples:
ds = create_an_xarray_dataset(example)
datasets.append(ds)
combined = xarray.concat(datasets, dim='example')
您不希望在循环内串联——这会使代码以二次时间运行
或者,您可以为结果分配单个Dataset/DataArray,并且
,例如:
(请注意,始终需要使用方括号进行索引,如[]
或.loc[]
——使用sel()
和isel()
进行赋值不起作用。)
这两种方法同样有效——这实际上是一个品味的问题,哪一种更适合您或更适合您的应用程序
值得一提的是,pandas也有同样的限制:每次使用append
方法时,确实会复制整个数据帧。这是一个永久的惊喜,也是新用户性能问题的根源。因此,我认为我们做出了正确的设计决策,没有将其包括在xarray中
dims = ('example', 'x', 'y')
combined = xarray.Dataset(
data_vars={'my_variable': (dims, np.zeros((len(examples), 100, 200)))},
coords={'example': examples})
for example in examples:
combined.loc[dict(example=example)] = create_an_xarray_dataset(example)