如何在Python中将netCDF CMIP5气候数据解包到数据帧?

如何在Python中将netCDF CMIP5气候数据解包到数据帧?,python,pandas,Python,Pandas,我不熟悉.nc文件格式,并且已经广泛地查看了可用的答案–如果我遗漏了什么,欢迎提供任何帮助 我有一个CMIP5气候文件(netCDF4格式)-维度是十年内的每日值:纬度、经度、温度、气候投影、时间。我需要迭代每个投影的每个位置(lat/lon对),并按位置对每个月或每年的温度数据执行操作(例如,我希望对单个位置中一年中所有天数的温度值求和) 使用ncdump,可以获得以下数据: 目前,我正在尝试将该文件作为Python中的数组或数据帧写入中间形式。有没有一种简单的方法来解压缩netCDF数据并

我不熟悉.nc文件格式,并且已经广泛地查看了可用的答案–如果我遗漏了什么,欢迎提供任何帮助

我有一个CMIP5气候文件(netCDF4格式)-维度是十年内的每日值:纬度、经度、温度、气候投影、时间。我需要迭代每个投影的每个位置(lat/lon对),并按位置对每个月或每年的温度数据执行操作(例如,我希望对单个位置中一年中所有天数的温度值求和)

使用ncdump,可以获得以下数据:

目前,我正在尝试将该文件作为Python中的数组或数据帧写入中间形式。有没有一种简单的方法来解压缩netCDF数据并写入阵列?理想的输出格式是沿着数据框的线条,其中每一行都是一个具有以下列标题的单个条目:“纬度”、“经度”、“投影”、“温度”、“时间”。我见过2D或3D阵列的示例,但对于高维数据似乎不起作用

时间/内存不如使用中间数据格式来检查计算结果重要

代码:

编辑:当前输出(小剪辑-返回非常大的数据列表)

您可以添加您尝试过的代码吗?hi@Yuca-代码已添加到上面。您可以包含代码的输出吗?当前输出(“临时列表”)超过180万条(每个变量的单个值)。有没有一个简单的方法可以在这里发布?我陷入困境的地方:是否可以迭代一个.nc文件(netCDF4格式)并将每次迭代保存在列表、字典或其他人类可读的文件类型中?输出可以是前5行,以了解您拥有的结构与想要的结构
import netCDF4
import collections
from collections import defaultdict

t1 = netCDF4.MFDataset("Extraction_tasmax.nc") #
t1.variables.keys()
tmax = t1.variables['tasmax']


lat = t1.variables['latitude'][:]    
lon = t1.variables['longitude'][:]
time = t1.variables['time'][:]
tempmax = t1.variables['tasmax'][:, :, :, :] # projection, time, lat, lon
column_names = ['tempmax', 'projection', 'time', 'latitude', 'longitude']
temp_list = []


for projection in tempmax:
    for time in projection:
        for lat in time:
            for lon in lat:
                temp_list.append([tempmax, projection, time, lat, lon])


temperature_data = pd.DataFrame(temp_list, columns = column_names)