繁体   English   中英

是否可以附加到 xarray.Dataset?

[英]Is it possible to append to an xarray.Dataset?

我一直在使用.append()方法在.append()中连接两个表(具有相同的字段)。 不幸的是,这种方法在xarray中不存在,还有其他方法吗?

Xarray 没有 append 方法,因为它的数据结构建立在 NumPy 的不可调整大小的数组之上,所以我们不能在不复制整个数组的情况下追加新元素。 因此,我们不实现append方法。 相反,您应该使用xarray.concat

一种常见的模式是在列表中累积 Dataset/DataArray 对象,并在最后连接一次:

datasets = []
for example in examples:
    ds = create_an_xarray_dataset(example)
    datasets.append(ds)
combined = xarray.concat(datasets, dim='example')

您不想在循环内连接 - 这会使您的代码以二次时间运行。

或者,您可以为结果分配一个 Dataset/DataArray,并用 indexing 填充值,例如,

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)

(请注意,您始终需要使用带有[].loc[]等方括号的索引——使用sel()isel()分配不起作用。)

这两种方法同样有效——这实际上是一个品味问题,哪个对您来说看起来更好,或者哪个更适合您的应用程序。

值得一提的是,pandas 也有同样的限制:每次使用append方法时,它确实会复制整个数据帧。 对于新用户来说,这是一个永久的惊喜和性能问题的根源。 所以我确实认为我们做出了正确的设计决定,没有将它包含在 xarray 中。

您可以使用.concatmerge() 文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM