import os import pandas as pd import netCDF4 as nc import numpy as np from logzero import logger target_lon = ['120.85', '121.15'] target_lat = ['29.6', '28.8'] def trans2csv(file_list): file_list.sort() par_list = [] cols = [] for file_name in file_list: logger.info(file_name) try: file = file_name.split('\\')[1] date_time = file.split('_')[1] + ' ' + file.split('_')[2] print(date_time) nc_data = nc.Dataset(file_name) lat = nc_data['latitude'][:] # 纬度 lon = nc_data['longitude'][:] # 经度 lat_str = list(map(lambda x: str(round(x, 2)), np.asarray(lat))) lon_str = list(map(lambda x: str(round(x, 2)), np.asarray(lon))) # 分辨率 min_lat, max_lat = min(target_lat), max(target_lat) min_lon, max_lon = min(target_lon), max(target_lon) min_lat_index, max_lat_index = lat_str.index(min_lat), lat_str.index(max_lat) min_lon_index, max_lon_index = lon_str.index(min_lon), lon_str.index(max_lon) par = np.asarray(nc_data['PAR'][:]) par_save = par[max_lat_index:min_lat_index, min_lon_index:max_lon_index] logger.info(par_save.shape) new_par = np.c_[np.array(lat_str)[max_lat_index:min_lat_index], par_save] new_par = np.c_[np.array([str(date_time)] * par_save.shape[0]), new_par] cols = lon_str[min_lon_index:max_lon_index] par_list.extend(new_par) except Exception as e: logger.info(e) continue date_df = pd.DataFrame.from_records(par_list, columns=['time', 'lat'] + cols) return date_df