python - 是否可以附加到 xarray.Dataset?

标签 python numpy pandas python-xarray

我一直在使用 .append() 方法连接 pandas 中的两个表(具有相同的字段)。不幸的是,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,并且 fill in the values with 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() 不起作用。)

这两种方法同样有效 - 哪一种看起来更好或更适合您的应用程序,这真的是一个品味问题。

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

关于python - 是否可以附加到 xarray.Dataset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33435953/

相关文章:

python - Lasso 回归,所有系数均为 0

python - 如何检查 anaconda 软件包是否已正确安装

python - 将一个张量变换为另一个张量

python - 另一个DataFrame的pandas dataframe求和日期范围

python - 有没有办法使用 get_dummies() 即时预处理(分割)元素?

python - 为什么 mod_wsgi 在 Windows 上不支持守护进程模式?

python - 传递带有(意外)转义字符的字符串会丢失字符,即使它是原始字符串

python - 如何使用 Python 检查超大数据集中的重复图片?

python - 提取 Pandas 中 dtype 为 'object' 的列的索引

python - 我们如何将整列的内容拆分为同一个表中的单独列?