簡體   English   中英

從 one.netCDF4 文件中提取兩個變量到 csv 有什么想法嗎?

[英]Any ideas to extract two variables from one netCDF4 file to csv?

我是 Python 的新手,正在嘗試從 .netCDF4 文件中提取數據。 它是一組氣象數據,包含幾個變量:溫度、相對濕度、風速、風向等。每個變量都有兩個維度:時間(4464)和z(7)。 (z 是站的高度)。 每個變量是同時獲取的時間和高度,所以每個變量的時間和z維度是相同的!

import netCDF4 as nc
from netCDF4 import num2date
import numpy as np
import os
import pandas as pd

#Open netCDF4 file
input_dir = 'C:/Users/censoring this part' #netCD4 file directory
filename = 'v1.0_201910' #netCD4 file name without extension
ds = nc.Dataset(os.path.join(input_dir,filename+'.nc'))

#Extract variables
F = ds.variables['F'] #Wind speed in m/s
D = ds.variables['D'] #Wind direction in degree


#Get dimensions
time_dim, z_dim = F.get_dims()
time_var = ds.variables[time_dim.name]
times = num2date(time_var[:], time_var.units) #time points
z = ds.variables[z_dim.name][:] #point height

#Extracting file to CSV for wind speed and direction
output_dir = 'C:/Users/censoring this part' #Folder destination for .csv file
output_dest = os.path.join(output_dir, filename+'_F.csv')
print('Writing data in tabular form to destination (this may take some time)...')
times_grid, z_grid = [
    x.flatten() for x in np.meshgrid(times, z, indexing='ij')]
df = pd.DataFrame({
    'time': [t.isoformat() for t in times_grid],
    'height': z_grid[:],
    'wind speed': F[:].flatten()
    'wind direction': D[:].flatten()}) #this part doesn't work
df.to_csv(output_dest, index=False)
print('Successfully done') 

我想將風速 (F) 和風向 (D) 提取到一個 csv 文件,但它不允許我用我的代碼執行此操作 - 與首先分別使用 numpy 數組提取它們一樣,這不能解決任何問題. 我還想只從一個特定的高度選擇數據,並且在代碼中指定我想選擇的高度索引(例如 z[0])並不能完成這項工作。 我發現給出的錯誤總是表明數組大小不一樣,所以他們無法繼續代碼,但我不明白如何解決這個問題。

有解決這個問題的想法嗎? 謝謝!

你能檢查一下 to_pandas() 和 to_csv() 嗎? 實際上還有更多的解釋有人已經要求將 convert.netCDF 文件轉換為 csv

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM