Pandas 将netCDF数据导入数据帧

Pandas 将netCDF数据导入数据帧,pandas,dataframe,csv,import,netcdf,Pandas,Dataframe,Csv,Import,Netcdf,我正在尝试将netCDF文件转换为csv。我成功地做到了这一点。然而,如所附图片所示,我在导出的csv中有两个问题。数据帧。首先,我需要将datetime拆分为两个单独的列(仅日期,仅时间)。其次,当我运行代码时,我得到了3个不同变量(par、temp和evap)的相同值。代码如下: import netCDF4 from netCDF4 import Dataset from netCDF4 import num2date import pandas as pd import numpy a

我正在尝试将netCDF文件转换为csv。我成功地做到了这一点。然而,如所附图片所示,我在导出的csv中有两个问题。数据帧。首先,我需要将datetime拆分为两个单独的列(仅日期,仅时间)。其次,当我运行代码时,我得到了3个不同变量(par、temp和evap)的相同值。代码如下:

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

# Reading netCDF file
data = Dataset(r'G:\trial\Jan.nc', 'r')

# Defining parameters and dimensions 
lat = data.variables['latitude'][:]
long = data.variables['longitude'][:]
time = data.variables['time']
times = num2date(time[:], time.units)
par = data.variables['par'][:]
temp = data.variables['t2m'][:]
evap = data.variables['e'][:]

# Importing netCDF data from a single point 
idku_lat = 31.249464
idku_long = 30.210806
lat_diff = (lat - idku_lat)**2
lon_diff = (long - idku_long)**2
min_lat = lat_diff.argmin()
min_long = lon_diff.argmin()

# Creating a pandas DataFrame and import values from  the netCDF file

df = pd.DataFrame(0, columns = ['par','temp','evap'], index = times)

dt = np.arange(0, data.variables['time'].size)

for time_index in dt:
    df.iloc[time_index]= par[time_index,min_lat,min_long]


# Exporting the file to csv.
df.to_csv('my_data.csv')

我不确定您的预期输出是什么,但如果您只是想将数据集转换为数据帧,然后将其保存为csv文件,您可以这样做

import xarray as xr

ds = xr.open_dataset('G:\trial\Jan.nc')
df = ds.to_dataframe()
df = df.reset_index()

date = df['time'].dt.strftime('%m/%d/%Y')
time =  df['time'].dt.strftime('%H:%M:%S')

df['Date'] = date 
df['time'] = time



df.to_csv('myfile.csv',index=True, header=True)

看一看。提供预期输出和实际输出。非常感谢,它工作得非常好。但是,如果我需要将Datetime分为两列(分别用于时间和日期),我该怎么做?上面的答案应该回答您的第二个问题。我能想到的唯一方法是在将现有时间维度添加到数据帧并保存为csv文件之前,将其格式化为单独的日期和时间格式。