我正在尝试将 netCDF 文件转换为 csv。文件存储在 thredds 服务器中。我编写了下面的代码来读取文件 Thredds 服务器并从 netCDF 文件中存在的变量列表中选择六个变量,并将它们以 csv 格式存储在本地。
from datetime import datetime
from netCDF4 import Dataset
import netCDF4
import pandas as pd
import csv
def get_thredds_url(datetime_group, forecast_hour):
base_url="path"
thredds_url="path"
cycle_hour = "%02d" % datetime_group.hour
file_str=datetime_group.strftime("%Y%m%d%H")+"/gfs.t%sz.pgrb2.0p25.f%03d" % \
(cycle_hour, forecast_hour)
url = base_url + thredds_url + file_str
return (url)
下面的代码显示了所需的变量。
def main():
datetime_group = datetime(2017, 9, 26, 0)
forecast_hour = 240
url = get_thredds_url(datetime_group, forecast_hour)
print (url)
nc_handle=Dataset(url)
#print (nc_handle.variables.keys())
lat=nc_handle.variables['lat'][:]
lon=nc_handle.variables['lon'][:]
issue_time=nc_handle.variables['time'][:]
valid_time=nc_handle.variables['time1'][:]
temp=nc_handle.variables['Temperature_height_above_ground'][:]
dewpoint_temp=lat=nc_handle.variables['Dewpoint_temperature_height_above_ground'][:]
dtime = netCDF4.num2date(issue_time[:],units=units)
tmp = pd.Series(temp, index=dtime)
tmp.to_csv('temp.csv',index=True, header=True)
csvwriter = csv.writer(tmp, delimiter=',')
print (csvwriter)
if __name__ == "__main__":
main()
问题:我无法将文件写入 csvnformat,其中包含所有变量,例如 lat、lon、time、time1、Temperature_height_above_ground。所需的输出如下:
tmp.csv
lat lon time time1 Temperature_height_above_ground
1 ... .. ... .... ......
2 ... .. ... .... ......
3 ... .. ... .... ......
有人可以帮我解决这个问题吗?
提前致谢!
我想你正在寻找的是这个:
with open('temp.csv', 'w') as f:
writer = csv.writer(f, delimiter=',')
# write the header
writer.writerow(['lat',
'lon',
'time',
'time1',
'temp_height_above_ground',
'dewpoint_temp_height_above_ground',
'issue_time'])
# collect the columns as rows
rows = zip(lat,lon,issue_time,valid_time,temp,dewpoint_temp,dtime)
for row in rows:
writer.writerow(row)
您可以使用 Python 中的这个简单代码逐步将 NETCDF 转换为 CSV。我们需要 2 个主库
a-NetCDF-4 :-
(网络通用数据表,版本 4) 描述。 NetCDF 是一组软件库和自描述、独立于机器的数据格式,用于面向数组的科学数据*
b-xarray:xarray(以前称为 xray)是一个开源项目和 Python 包,它使标记多维数组的使用变得简单、高效且有趣!
导入库:
import netCDF4 as nc
import xarray as xr
data = nc.Dataset(r'C:\\Users\\Admin\\Desktop\\LDN DATA NC FORMAT\\20210312_0257.nc', 'r')
dataset = xr.open_dataset(xr.backends.NetCDF4DataStore(data))
df = dataset.to_dataframe()
csv_data=df.to_csv('C:\\Users\\Admin\\Desktop\\LDN DATA NC FORMAT\\20210312_0257.nc.csv')
print('\nCSV String:\n', csv_data)
屏幕截图#1:
屏幕截图#2:
执行完成后,将 csv 文件保存在提供的同一文件夹中