Что вам не хватает, так это то, что netCDF является гораздо более сложным форматом, чем CVS. Файл netCDF может содержать несколько массивов любой формы и размера. Файл CSV может содержать только один массив максимум из двух измерений (или набор одномерных массивов, если все они имеют одинаковую длину). Поэтому вы не можете просто конвертировать любой файл netCDF в CSV.
Давайте посмотрим на файл примера, который вы дали. Я повторяю информацию здесь с моей версией Xarray, которая кажется немного более многословной ...
In [16]: ds = xr.open_dataset('Complete_TAVG_EqualArea.nc')
In [17]: ds
Out[17]:
<xarray.Dataset>
Dimensions: (map_points: 5498, month_number: 12, time: 3240)
Coordinates:
longitude (map_points) float32 ...
latitude (map_points) float32 ...
* time (time) float64 1.75e+03 1.75e+03 1.75e+03 ... 2.02e+03 2.02e+03
Dimensions without coordinates: map_points, month_number
Data variables:
land_mask (map_points) float64 ...
temperature (time, map_points) float32 ...
climatology (month_number, map_points) float32 ...
Attributes:
Conventions: Berkeley Earth Internal Convention (based on CF-1.5)
title: Native Format Berkeley Earth Surface Temperature An...
history: 16-Jan-2020 06:51:38
institution: Berkeley Earth Surface Temperature Project
source_file: Complete_TAVG.50985s.20200116T064041.mat
source_history: 13-Jan-2020 17:22:52
source_data_version: ca6f26341938dae0ea7dd619bce6f15e
comment: This file contains Berkeley Earth surface temperatu...
Есть три переменных данных (land_mask, температура, климатология), плюс три вектора координат (долгота, широта, время). Возможно, вы можете включить векторы координат в качестве первой строки и столбца файла CSV, но даже тогда это означает, что вам нужно как минимум три отдельных файла CSV на файл netCDF.
Так, например, для фрейма данных climatology
вы можете записать в CVS следующее:
In [31]: clim = ds['climatology']
In [32]: clim.to_pandas().to_csv('clim.csv')
Итак, clim
- это xarray.DataFrame
, который, в принципе, можно записать в файл CSV. К сожалению, класс xarray.DataFrame
не имеет метода to_csv
. Однако класс pandas.DataFrame
делает, поэтому мы сначала преобразуем его во фрейм данных pandas. Посмотрите документацию по параметрам здесь , чтобы настроить сгенерированный выходной файл.