Создать один CSV из двух файлов CSV со значениями X и Y в Python

1

У меня два CSV файла; один из которых содержит X (долгота) и другие значения Y (широта) (они являются типом данных "float")

Я пытаюсь создать единый CSV со всеми возможными комбинациями (например, X1, Y1; X1, Y2; X1, Y3; X2, Y1; X2, Y2; X2, Y3... и т.д.),

Я написал следующее, что частично работает. Однако созданный файл CSV имеет линии между значениями, и я также получаю значения, хранящиеся таким образом, с помощью круглых скобок [20,7599 '] [' 135.9028 ']. Мне нужно 20.7599, 135.9028

import csv

inLatCSV = r"C:\data\Lat.csv"
inLongCSV = r"C:\data\Long.csv"
outCSV = r"C:\data\LatLong.csv"

with open(inLatCSV, 'r') as f:
  reader = csv.reader(f)
  list_Lat = list(reader)

with open(inLongCSV, 'r') as f:
   reader = csv.reader(f)
   list_Long = list(reader)

with open(outCSV, 'w') as myfile:
   for y in list_Lat:
       for x in list_Long:
            combVal = (y,x)
            #print (combVal)
            wr = csv.writer(myfile)
            wr.writerow(combVal)
Теги:
csv
list
geo

2 ответа

1
Лучший ответ

Добавление аргумента в функцию open сделало разницу:

with open(my_csv, 'w', newline="") as myfile:
    combinations = [[y,x] for y in list_Lat for x in list_Long]
    wr = csv.writer(myfile)
    wr.writerows(combinations)
1

Каждый раз, когда вы делаете что-то с файлами csv, Pandas - отличный инструмент

import pandas as pd

lats = pd.read_csv("C:\data\Lat.csv",header=None)
lons = pd.read_csv("C:\data\Long.csv",header=None)

lats['_tmp'] = 1
lons['_tmp'] = 1

df = pd.merge(lats,lons,on='_tmp').drop('_tmp',axis=1)
df.to_csv('C:\data\LatLong.csv',header=False,index=False)

Мы создаем блок данных для каждого файла и объединяем их во временном столбце, который производит декартово произведение. https://pandas.pydata.org/pandas-docs/version/0.20/merging.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню