Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将时间序列数据从csv转换为netCDF python_Python_Pandas_Csv_Netcdf_Netcdf4 - Fatal编程技术网

将时间序列数据从csv转换为netCDF python

将时间序列数据从csv转换为netCDF python,python,pandas,csv,netcdf,netcdf4,Python,Pandas,Csv,Netcdf,Netcdf4,此过程中的主要问题是以下代码: precip[:] = orig 产生以下错误: ValueError: cannot reshape array of size 5732784 into shape (39811,144,144) 我有两个CSV文件,其中一个CSV文件包含变量(降水量)的所有实际数据,每列作为一个站,它们对应的坐标在第二个单独的CSV文件中。 我的样本数据在 如果您想查看数据本身,但我的第一个CSV文件具有形状(39811144),第二个CSV文件具有形状(171,10)

此过程中的主要问题是以下代码:

precip[:] = orig
产生以下错误:

ValueError: cannot reshape array of size 5732784 into shape (39811,144,144)
我有两个CSV文件,其中一个CSV文件包含变量(降水量)的所有实际数据,每列作为一个站,它们对应的坐标在第二个单独的CSV文件中。 我的样本数据在

如果您想查看数据本身,但我的第一个CSV文件具有形状(39811144),第二个CSV文件具有形状(171,10),但请注意;我只使用切片数据帧作为(144,2)

代码如下:

stations = pd.read_csv(stn_precip)
stncoords = stations.iloc[:,[0,1]][:144]
orig = pd.read_csv(orig_precip, skiprows = 1, names = stations['Code'][:144])

lons = stncoords['X']
lats = stncoords['Y']

ncout = netCDF4.Dataset('Precip_1910-2018_homomod.nc', 'w')

ncout.createDimension('longitude',lons.shape[0])
ncout.createDimension('latitude',lats.shape[0])
ncout.createDimension('precip',orig.shape[1])
ncout.createDimension('time',orig.shape[0])

lons_out = lons.tolist()
lats_out = lats.tolist()
time_out = orig.index.tolist()

lats = ncout.createVariable('latitude',np.dtype('float32').char,('latitude',))
lons = ncout.createVariable('longitude',np.dtype('float32').char,('longitude',))
time = ncout.createVariable('time',np.dtype('float32').char,('time',))
precip = ncout.createVariable('precip',np.dtype('float32').char,('time', 'longitude','latitude'))

lats[:] = lats_out
lons[:] = lons_out
time[:] = time_out
precip[:] = orig
ncout.close()
我的代码主要基于以下帖子: 但不包括变量“时间”作为第三维度,所以这就是我失败的地方。 我想我应该期望降水量变量的形状是(398111444),但错误表明情况并非如此


不确定如何处理此问题,欢迎任何输入。

由于您有来自不同站点的数据,我建议对您的netCDF文件使用dimension
station
,而不要将
lon
lat
分开。当然,您可以将每个站点的经度和纬度保存为单独的变量

以下是一个可能的解决方案,以您的代码为例:

#!/usr/bin/env ipython
import pandas as pd
import numpy as np
import netCDF4

stn_precip='Precip_1910-2018_stations.csv'
orig_precip='Precip_1910-2018_origvals.csv'
stations = pd.read_csv(stn_precip)
stncoords = stations.iloc[:,[0,1]][:144]
orig = pd.read_csv(orig_precip, skiprows = 1, names = stations['Code'][:144])

lons = stncoords['X']
lats = stncoords['Y']
nstations = np.size(lons)

ncout = netCDF4.Dataset('Precip_1910-2018_homomod.nc', 'w')

ncout.createDimension('station',nstations)
ncout.createDimension('time',orig.shape[0])

lons_out = lons.tolist()
lats_out = lats.tolist()
time_out = orig.index.tolist()

lats = ncout.createVariable('latitude',np.dtype('float32').char,('station',))
lons = ncout.createVariable('longitude',np.dtype('float32').char,('station',))
time = ncout.createVariable('time',np.dtype('float32').char,('time',))
precip = ncout.createVariable('precip',np.dtype('float32').char,('time', 'station'))

lats[:] = lats_out
lons[:] = lons_out
time[:] = time_out
precip[:] = orig
ncout.close()
因此,关于输出文件(
ncdump-h Precip_1910-2018_homomod.nc
)的信息如下所示: