Как записать значения широты, долготы и значений другой переменной в CSV-файл в трех разных столбцах? - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу записать значения широты, долготы и значения Air_flux в CSV-файл в трех разных столбцах.

Вот код в Python3, который я сделал до сих пор: Файл "путь" имеет все значения "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()

Я знаю только способ хранения значений в одном столбце ... НО: Я хочу записать значения широты, долготы и значения Air_flux в CSV-файл таким образом, чтобы один столбец имел значения широты, 2-й столбец для значения долготы и третий столбец для «Air_flux»

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Поскольку значения потока сохраняются по этим широтам и долготам, после итерации значений Lat по лону я извлек индексы широт и долгот по потоку:

writer.writerow([x, y, flux[lat.index, lon.index]])
0 голосов
/ 02 апреля 2019

Насколько я понимаю, ваши данные требуются в формате

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...