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