python 将一个xlsx文件中的QPE、lon、lat等构建成nc文件,其中QPE为变量,lon、lat为经纬度维度,time=202408201323
时间: 2024-09-09 16:17:22 浏览: 55
在Python中,你可以使用pandas和xarray结合openpyxl和netCDF4库来完成这样的转换。这里是一个示例代码片段:
```python
import pandas as pd
import xarray as xr
import netCDF4
from openpyxl import load_workbook
# 1. 加载Excel文件中的数据
wb = load_workbook('input.xlsx')
sheet = wb.active
data_df = pd.DataFrame(sheet.values)
# 假设Excel的第一行是列名,提取经纬度和时间信息
columns = data_df.iloc[0]
QPE_data = data_df.iloc[1:, columns.get_loc('QPE')]
lat_data = data_df.iloc[1:, columns.get_loc('lat')]
lon_data = data_df.iloc[1:, columns.get_loc('lon')]
time = '202408201323' # 假设固定的时间值
# 2. 构建xarray Dataset
data_array = QPE_data.to_numpy().reshape(len(lat_data), len(lon_data))
ds = xr.DataArray(data=data_array,
dims=['lat', 'lon'],
coords={'lat': lat_data.tolist(), 'lon': lon_data.tolist()},
attrs={'time': time})
# 3. 将xarray Dataset写入NetCDF文件
with netCDF4.Dataset('output.nc', 'w', format='NETCDF4') as nc_file:
ds.to_dataset(name='QPE').to_netCDF(nc_file)
```
这段代码首先从Excel文件加载数据,然后根据提供的列名构建xarray DataArray,并设置好经纬度作为维度,时间作为属性。最后,它将这个DataArray写入一个新的NetCDF文件。
注意:你需要根据实际的Excel文件内容调整列名查找和数据处理部分。此外,如果时间不是固定的,需要从Excel或其他源获取并处理。
阅读全文