迭代所有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,并使用文件名保存的主要内容,如果未能解决你的问题,请参考以下文章

在每个迭代步骤后将计算数据写入 txt/csv

在数据框中迭代并保存每个股票历史数据,而无需在 CSV 中下载

如何修改文件 mfg_config.csv 并为 aws edukit 教程中的所有文件添加相关路径?

使用 pandas(和 glob?)合并目录中的大量(csv)数据文本文件

使用 Python 从目录中读取所有 csv 文件

比较 CSV 文件对并为第二个文件中不匹配的单元格着色