迭代所有csv文件的目录,并为每个单独的(csv)文件创建kml,并使用文件名保存

问题描述 投票:0回答:1
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

python pandas glob simplekml
1个回答
1
投票

这里您要遍历列而不是行,然后将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)))

© www.soinside.com 2019 - 2024. All rights reserved.