0
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')

i like to save each individual csv as its own kml using the filename

tdelaney
  • 73,364
  • 6
  • 83
  • 116

1 Answers1

1

Here you're iterating over the columns instead of the rows and then you pass pandas.Series as columns to kml.newpoint arguments instead of some values. Use DataFrame.apply() to iterate over the dataframe rows and add a point per each row to your kml object as follows:

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)))

Azim Mazinani
  • 705
  • 6
  • 11