У меня есть два CSV-файла.
Первый, когда рассматривается как список, выглядит следующим образом:Соответствующий поплавок в двух списках
('Rubus idaeus', '10.0', '56.0')
('Neckera crispa', '9.8785', '56.803')
('Dicranum polysetum', '9.1919', '56.0456')
('Sphagnum subnitens', '9.1826', '56.6367')
('Taxus baccata', '9.61778', '55.68833')
('Sphagnum papillosum', '9.1879', '56.0442')
Столбцы «Вид», «Долгота» и «Широта». Это наблюдения, сделанные в поле.
Другой файл также является CSV-файлом. Испытание, похожее на реальную вещь. Это выглядит так:
{'y': '58.1', 'x': '22.1', 'temp': '14'}
{'y': '58.2', 'x': '22.2', 'temp': '10'}
{'y': '58.3', 'x': '22.3', 'temp': '1'}
{'y': '58.4', 'x': '22.4', 'temp': '12'}
{'y': '58.5', 'x': '22.5', 'temp': '1'}
{'y': '58.6', 'x': '22.6', 'temp': '6'}
{'y': '58.7', 'x': '22.7', 'temp': '0'}
{'y': '58.8', 'x': '22.8', 'temp': '13'}
{'y': '58.9', 'x': '22.9', 'temp': '7'}
Оба файла очень длинны.
У меня есть наблюдение, и теперь я хочу, чтобы найти ближайший меньшее число в файле, содержащем климатические данные, а затем добавить эту строку в другой, поэтому выход становится:
('Dicranum polysetum', '9.1919', '56.0456', 'y': '9.1', 'x': '56.0', 'temp': '7')
Я попытался создавая вложенные циклы путем итерации через файлы CSV с использованием DictReader
, но он очень сильно вложен. И это займет огромное количество циклов, чтобы пройти через все это.
Кто-нибудь знает о методе?
Код, который у меня есть на данный момент, низок, но я попытался сделать цикл несколькими способами, и я ожидаю, что в моем общем подходе есть что-то принципиально неправильное.
import csv
fil = csv.DictReader(open("TestData.csv"), delimiter=';')
navn = "nyDK_OVER_50M.csv"
occu = csv.DictReader(open(navn), delimiter='\t')
for row in fil:
print 'x=',row['x']
for line in occu:
print round(float(line['decimalLongitude']),1)
if round(float(line['decimalLongitude']),1) == row['x']:
print 'You did it, found one dam match'
Вот ссылки для моих двух файлов, так что вы не должны делать любые данные в случае, если вы знаете что-то, что может подтолкнуть меня вперед.
https://www.dropbox.com/s/lmstnkq8jl71vcc/nyDK_OVER_50M.csv?dl=0 https://www.dropbox.com/s/v22j61vi9b43j78/TestData.csv?dl=0
С наилучшими пожеланиями, Матиас
Что такое x и y в данных о климате? Lat/Lon? – reptilicus
Вы изучили данные, хранящиеся в http://en.wikipedia.org/wiki/K-d_tree? Таким образом, поиск ближайшего соседа в O (log (n)) времени. –
У вас есть температура для каждой .1 градуса или ваша пропавшая информация отсутствует? В первом случае задача тривиальна. –