使用python中的X和Y值从两个CSV文件创建单个CSV

2024-06-28 20:56:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我正在尝试创建一个包含所有可能组合(例如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)

Tags: 文件csvdataaswithopenlonglist
2条回答

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)

任何时候你在用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

相关问题 更多 >