专题3:按照车辆ID筛选

一.按照车辆ID筛选

由于先前我们将NGSIM数据集分割成11组子文件,并按照路段类型的不同分成了:“us-101”, “i-80”, “lankershim”, "peachtree"这四种路段,以路段类型命名的文件夹下有多个csv文件(不一定都是11个csv文件)。接下来根据车辆类型的不同,对每个路段下的csv文件分别提取出相同车辆ID的并放置在一个csv文件中。下述过程的代码在“NGSIM数据处理程序(跟驰车辆)”的“Veh_ID_Select.py

1.获取主文件夹下的子文件夹:

本示例中的主文件夹是位于G盘的“NGSIM_data_processing”(在NGSIM数据集处理程序中有提到)。获取目标路径下所有的文件夹和文件(由于主文件夹下只有文件夹没有csv文件,故无需做判断筛选),将获取到的子文件夹存放在列表中,代码如下:

object_list = os.listdir(path)

2.读取每一个子文件夹下的csv文件:

上面提到,将主文件夹“NGSIM_data_processing”中所有的子文件夹均获取,并存放在列表中。这一步就是要将每一个以路段类型命名的子文件夹中的csv文件读取,并存放在字典中,代码如下:

 for sub_object in self.Exist_List(path):
            sub_obejct_path = f"{path}\\{sub_object}"
            sub_object_list = os.listdir(sub_obejct_path)
            object_dict[sub_object] = sub_object_list

3.创建文件夹用以存放筛选后的csv文件:

代码如下所示:

 def Create_Folder(self,path):
        isExists = os.path.exists(path)
        try:
            if not isExists:
                os.makedirs(path)
                print("创建文件夹成功")
            else:
                print("文件夹已存在")
        except FileExistsError:
            print("目录已存在")

4.分别遍历子文件夹中的csv文件,并将相同车辆ID的存放在一起

主运行程序如下:

 df = pd.read_csv(csv_path_exist)  # 读取目标路径下的csv文件
                veh_id_set = set()  # 空集合:筛选数据
                for veh_id in df["Vehicle_ID"]:
                    veh_id_set.add(veh_id)

                veh_id_list = list(veh_id_set)  # 数据类型转换:集合转列表
                for veh_id in veh_id_list:
                    csv_path_new = f"{sub_folder_path_new}\\{veh_id}.csv"
                    veh_select_df = df[df["Vehicle_ID"] == veh_id]
                    veh_select_df.to_csv(csv_path_new,index=False)

二.总结:

根据上述操作,我们按照车辆ID的不同又对数据做了筛选,筛选结果如下所示(以路段us-101为例):

在这里插入图片描述

  • 文件的文件名就是车辆ID

在这里插入图片描述
在这里插入图片描述
详细的代码,请查看《NGSIM数据集处理》。NGSIM数据集下载请查看NGSIM数据集大家有需要的可以下载浏览查看。后续会更新筛选教程,敬请关注!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小谢@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值