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

2024-07-08 10:25:20 发布

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

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


Tags: csvimportreportstatustrainingkmlusersglob
1条回答
网友
1楼 · 发布于 2024-07-08 10:25:20

在这里,您对列而不是行进行迭代,然后将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)))

相关问题 更多 >

    热门问题