python读取文件夹下面的所有csv文件,并根据文件里面的经纬度给csv文件新增一列geohash码

邮差的信 提交于 2020-01-12 13:44:35

python读取文件夹下面的所有csv文件,并对文件里面的经纬度进行geohash编码后作为新增列保存到csv文件里面

代码如下:(注:这段代码处理csv文件里面只有两列没有列名的数据,分别是经度和纬度


import geohash as gh
import os
import pandas as pd
for info in os.listdir("E:\geohashData\jwdt1"):#文件夹的路径
    domain = os.path.abspath(r"E:\geohashData\jwdt1") #获取文件夹的路径
    info = os.path.join(domain,info) #将路径与文件名结合起来就是每个文件的完整路径
    data = pd.read_csv(info,header=None,names=['longitude','latitude'])#读数据并为这两列数据新增列名

#data1=pd.DataFrame(data,columns=['latitude','longitude'])
data_list=[]
latitude=data["latitude"]
longitude=data["longitude"]
for i in  range(1,960357): #这里需要改进,这里的数据我是先print(data)得到数据的行数以后又把行数放进去的,太low了,以后有机会改进
    geohash=gh.encode(float(latitude[i-1]),float(longitude[i-1]))#geohash将经纬度编码
    data_list.append([latitude[i-1],longitude[i-1],geohash])#将经纬度和geohash码放到数组中
df=pd.DataFrame(data_list,columns=['latitude','longitude','geohash'])#给数据对应的列名
df.to_csv("e:/geohashR/geohashR11.csv",index=None)#保存生成的csv文件

当csv文件里面混杂着除了经纬度以外的其他数据时,处理代码如下(注:下面的代码我还没调试成功,仅供参考)

import geohash as gh
import os
import pandas as pd
for info in os.listdir("E:\geohashData\hashTestData.csv"):#
    domain = os.path.abspath(r"E:\geohashData\hashTestData.csv") #
    info = os.path.join(domain,info) #将路径与文件名结合起来就是每个文件的完整路径
    #data = pd.read_csv(info) 
    data = pd.read_csv(info,header=None,names=['_C0','_C1','_C2','longitude','latitude','_C5','_C6','_C7','_C8','_C9','_C10','_C11','_C12','_C13'])
data
#data1=pd.DataFrame(data,columns=['latitude','longitude'])
data_list=[]
latitude=data["latitude"]
longitude=data["longitude"]
#latitude=data["latitude"]
#print(latitude[1])
for i in  range(1,1044273): 
    try:
        geohash=gh.encode(float(latitude[i-1]),float(longitude[i-1]))
        data_list.append([_C0[i-1],_C1[i-1],_C2[i-1],longitude1[i-1],latitude[i-1],geohash,_C5[i-1],_C6[i-1],_C7[i-1],_C8[i-1],_C13[i-1]])
    except KeyError:
        continue
df=pd.DataFrame(data_list,columns=['_C0','_C1','_C2''longitude1','latitude','geohash''_C5','_C6','_C7','_C8','_C13'])
df.to_csv("e:/geohashR/geohashR.csv",index=None)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!