在python

时间:2018-06-22 14:21:38

标签: python list csv geo

我有两个CSV文件;一个包含X(经度),另一个包含Y(纬度)值(它们是“浮动”数据类型)

我正在尝试创建具有所有可能组合(例如X1,Y1; X1,Y2; X1,Y3; X2,Y1; X2,Y2; X2,Y3 ...等)的单个CSV

我写了下面的部分内容。但是,创建的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)

2 个答案:

答案 0 :(得分: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 :(得分: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