Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
';无效索引错误';使用python xarray将netCDF文件连接为数据集时_Python_Database_Dataframe_Concatenation_Python Xarray - Fatal编程技术网

';无效索引错误';使用python xarray将netCDF文件连接为数据集时

';无效索引错误';使用python xarray将netCDF文件连接为数据集时,python,database,dataframe,concatenation,python-xarray,Python,Database,Dataframe,Concatenation,Python Xarray,我想使用pythonxarray“open\mfdataset”将目录中的50个netCDF文件连接起来。它适用于一小部分netCDF文件,但不适用于连接所有50个文件。在脚本“demo.py”中从“toolbox.py”调用函数时出现此错误: 文件“”,第1行,在 运行文件('data_dir/demo.py',wdir='') 文件 “anaconda3/lib/python3.6/site packages/spyder_kernels/customize/spyderrcustomize

我想使用pythonxarray“open\mfdataset”将目录中的50个netCDF文件连接起来。它适用于一小部分netCDF文件,但不适用于连接所有50个文件。在脚本“demo.py”中从“toolbox.py”调用函数时出现此错误:

文件“”,第1行,在 运行文件('data_dir/demo.py',wdir='')

文件 “anaconda3/lib/python3.6/site packages/spyder_kernels/customize/spyderrcustomize.py”, 第827行,在runfile中 execfile(文件名、命名空间)

文件 “anaconda3/lib/python3.6/site packages/spyder_kernels/customize/spyderrcustomize.py”, 第110行,在execfile中 exec(编译(f.read(),文件名,'exec'),命名空间)

文件“data_dir/demo.py”,第15行,在 数据文件=concat(数据目录、数据块、文件名)

文件“Python/toolbox.py”,第53行,在 海螺 数据_vars='minimal',parallel=False).chunk(块)

文件 “anaconda3/lib/python3.6/site packages/xarray/backends/api.py”, 第719行,在open_mfdataset中 ids=ids)

文件 “anaconda3/lib/python3.6/site packages/xarray/core/combine.py”, 第553行,自动联合收割机 数据变量=数据变量,坐标=坐标)

文件 “anaconda3/lib/python3.6/site packages/xarray/core/combine.py”, 第475行,输入联合收割机 compat=compat)

文件 “anaconda3/lib/python3.6/site packages/xarray/core/combine.py”, 第493行,沿第一个尺寸自动合并 数据(变量、坐标)

文件 “anaconda3/lib/python3.6/site packages/xarray/core/combine.py”, 第514行,在自动联合收割机1d中 合并=合并(连接,兼容=兼容)

文件 “anaconda3/lib/python3.6/site packages/xarray/core/merge.py”, 第532行,合并中 变量,坐标名称,dims=merge\u core(dict\u like\u对象,compat,join)

文件 “anaconda3/lib/python3.6/site packages/xarray/core/merge.py”, 第445行,在merge_core中 对齐=深度对齐(强制,连接=连接,复制=假,索引=索引)

文件 “anaconda3/lib/python3.6/site packages/xarray/core/alignment.py”, 第217行,深对齐 排除=排除)

文件 “anaconda3/lib/python3.6/site packages/xarray/core/alignment.py”, 第133行,对齐 索引=接合器(匹配索引)

文件 “anaconda3/lib/python3.6/site packages/pandas/core/index/base.py”, 第2223行,在 返回自我联合(其他)

文件 “anaconda3/lib/python3.6/site packages/pandas/core/index/datetimes.py”, 第493行,联合体 结果=Index.union(此,其他)

文件 “anaconda3/lib/python3.6/site packages/pandas/core/index/base.py”, 第2332行,联合体 indexer=self.get\u索引器(其他)

文件 “anaconda3/lib/python3.6/site packages/pandas/core/index/base.py”, 第2740行,在get_索引器中 raise INVALIDIDEXERROR('重新索引仅对唯一有效'

InvalidIndexError:重新索引仅对唯一值索引有效 物体

我尝试查看单个netCDF文件,并尝试选择不同的netCDF文件进行连接。我认为这可能是因为有多个索引对象是相同的,但我并不真正理解

def concat(data_dir,chunks,file_name):
    # data_dir = directory where IMOS glider .nc files exist
    # chunks = output variable 'chunks' from function 'find_chunks' - this is a single value
    # file_name = specify string for name of file (not including extension e.g. '.zarr')

    # concatenate IMOS glider netCDF files in data_dir
    data_files = xr.open_mfdataset(data_dir + '*.nc', concat_dim='TIME',data_vars='minimal',parallel=False).chunk(chunks)
    print('Data concatenated..')

    # I then save the concatenated dataset as a netCDF and .zarr. This only works for smaller slections of netCDF files.

    return data_files

我需要一个连接的数据集,可以从函数返回并另存为netCDF和.zarr文件。

亲爱的UpperEastSide,我通常使用与您相同的代码来连接Python中的netCDF。唯一的区别是“chunks”参数在“xr.open\mfdataset”中函数。此外,chunks参数应该是一个字典,具体包含每个标签的每个维度的大小。如果可能的话,尝试这种修改,让我们知道什么最有效。Philipedar UpperEastSide,我通常使用与您相同的代码在Python中连接NetCDF。唯一的区别是“chunks”参数位于“xr.open_mfdataset”函数中。此外,chunks参数应该是一个字典,其中包含每个标签的每个维度的大小。如果可能,请尝试更改,并让我们知道什么最有效。Philipe