迭代所有csv文件的目录,并为每个单独的(csv)文件创建kml,并使用文件名保存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代所有csv文件的目录,并为每个单独的(csv)文件创建kml,并使用文件名保存相关的知识,希望对你有一定的参考价值。
import csv
import simplekml
import pandas as pd
import glob
frame = pd.DataFrame()
filelist=glob.glob('/Users/germanportes/Documents/Status_Report/Telework_training/Anomaly_6/files/*.csv')
kml = simplekml.Kml()
for file in filelist:
a6 =pd.read_csv(file)
for row in a6:
kml.newpoint(name=a6['idfa'], description = a6['device_os'],coords = [(a6['longitude'], a6['latitude'])])
kml.save('/Users/germanportes/Documents/Status_Report/Telework_training/Anomaly_6/files/kml/'+str(a6)+'.csv')
我喜欢使用文件名将每个单独的csv保存为自己的kml
答案
这里您要遍历列而不是行,然后将pandas.Series
作为列传递给kml.newpoint
参数而不是某些值。使用DataFrame.apply()遍历数据帧行,并向kml对象的每一行添加一个点,如下所示:
from os.path import join
from glob import iglob
from pathlib import Path
import simplekml
import pandas as pd
csv_dir = 'path/to/csv/directory'
kml_dir = 'path/to/kml/directory'
for file in iglob(join(csv_dir, '*.csv')):
# read the csv file
df = pd.read_csv(file)
# make an empty kml object
kml = simplekml.Kml()
# iterate over the rows and and add new points to kml
df.apply(lambda x: kml.newpoint(name=x['idfa'], description = x['device_os'], coords=[(x['longitude'], x['latitude'])]), axis=1)
# save it as kml with the csv filename
kml.save(join(kml_dir, '.kml'.format(Path(file).stem)))
以上是关于迭代所有csv文件的目录,并为每个单独的(csv)文件创建kml,并使用文件名保存的主要内容,如果未能解决你的问题,请参考以下文章
在数据框中迭代并保存每个股票历史数据,而无需在 CSV 中下载
如何修改文件 mfg_config.csv 并为 aws edukit 教程中的所有文件添加相关路径?