如何在三个不同的列中的csv文件中写入纬度,经度和其他变量值的值?

问题描述 投票:0回答:2

我想在三个不同的列中的csv文件中写入Latitude,Longitude和Air_flux值的值。

这是我到目前为止在Python3中的代码:文件“path”在指定的Lat和Lon中具有“Air_Flux”的所有值。

码:

import numpy as np
import csv

LAT_MIN = 34.675
LAT_MAX = 38.275
LON_MIN = 124.625
LON_MAX = 130.795
path = 'BESS_PAR_Daily.A2015004.nc_output.csv' # "File That contains the Values Of Air_Flux"

flux = np.genfromtxt(path, delimiter=',') # Reading Data from File
latData = np.arange(LAT_MIN, LAT_MAX, 0.05)
lonData = np.arange(LON_MIN, LON_MAX, 0.05)


with open('data.csv', 'w') as file:
    writer = csv.writer(file, delimiter=',')
    for x in np.nditer(latData.T, order='C'):
        for y in np.nditer(lonData.T, order='C'):
        file.write(str(x))
        file.write("\n")

        file.write(str(y))
        file.write("\n")

    for fl in np.nditer(flux):
        file.write(str(fl))
        file.write("\n")

file.close()

我只知道在一列中存储值的方法...但是:我想在csv文件中写入Latitude,Longitude和Air_flux值的值,使得一列具有纬度值,第二列为经度值和“Air_flux”的第三栏

python csv latitude-longitude
2个回答
0
投票

我的理解是,您需要格式化数据

LAT1 LON1 FLUX1
LAT2 LON2 FLUX2

在这种情况下,您不需要多个for循环,您可以将所有三个数组传递给nditer方法,然后使用csvwriter.writerows在一个范围内写入所有值。

以下是基于您的方案的示例

import numpy as np
import csv

LAT_MIN = 34.675
LAT_MAX = 38.275
LON_MIN = 124.625
LON_MAX = 130.795
# path = 'BESS_PAR_Daily.A2015004.nc_output.csv' # "File That contains the Values Of Air_Flux"

# flux = np.genfromtxt(path, delimiter=',') # Reading Data from File
# latData = np.arange(LAT_MIN, LAT_MAX, 0.05)
# lonData = np.arange(LON_MIN, LON_MAX, 0.05)
flux = np.array([1,2,3,4,5])
latData = np.array([1,2,3,4,5])
lonData = np.array([1,2,3,4,5])

with open('data.csv', 'w') as file:
    writer = csv.writer(file, delimiter=',')
    for x,y,z in np.nditer([latData.T, lonData.T, flux], order='C'):
        writer.writerow([x,y,z])

你也不需要file.close(),因为with块会处理它


0
投票

由于磁通量值存储在那些Lat和Lons之间,在Lon上迭代Lat值之后,我在磁通量上获得了lat和lon的指数:

writer.writerow([x, y, flux[lat.index, lon.index]])
© www.soinside.com 2019 - 2024. All rights reserved.