You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python+SUMO Traci导出停车数据至Excel遇ValueError求助

问题排查与修复方案

错误原因

  1. 数据结构不匹配:你定义的parkingList是一维列表(包含7个元素),但pandas.DataFrame要求传入二维结构(每个子列表代表一行数据)。当传入一维列表时,pandas会将每个元素解析为一行、1列的数据,但你指定了7列,导致形状(7,1)与预期(7,7)不匹配,触发ValueError。
  2. 数据丢失:遍历停车区域时,每次直接赋值parkingList = [...]会覆盖之前的数据,最终仅保留最后一个停车区域的信息。
  3. 缩进错误:代码中部分逻辑的缩进位置错误,导致仿真步执行后未正确进入停车区域数据收集流程。

修复代码

import traci
import time
import traci.constants as tc
import pytz
import datetime
from random import randrange
import pandas as pd

def getdatetime():
    utc_now = pytz.utc.localize(datetime.datetime.utcnow())
    currentDT = utc_now.astimezone(pytz.timezone("Asia/Riyadh"))
    DATIME = currentDT.strftime("%Y-%m-%d %H:%M:%S")
    return DATIME

sumoCmd = ["sumo", "-c", "cologne6to8.sumocfg"]
traci.start(sumoCmd)

# 运行仿真直到结束
while traci.simulation.getMinExpectedNumber() > 0:
    traci.simulationStep()

# 初始化空列表用于收集所有停车区域数据
parkingList = []
ParkingAreas = traci.parkingarea.getIDList()

for parking_id in ParkingAreas:
    lane = traci.parkingarea.getLaneID(parking_id)
    startpos = traci.parkingarea.getStartPos(parking_id)
    endpos = traci.parkingarea.getEndPos(parking_id)
    vehCount = traci.parkingarea.getVehicleCount(parking_id)
    vehid = traci.parkingarea.getVehicleIDs(parking_id)
    # 将当前停车区域数据作为子列表追加到总列表
    parkingList.append([getdatetime(), parking_id, lane, startpos, endpos, vehCount, vehid])

traci.close()

# 生成Excel文件
columnnames = ['dateandtime', 'parkingAreaID', 'Lane', 'start pos', 'end pos', 
               'numVehStops', 'vehIDsAtStop']

# 此时parkingList是二维结构,与列数匹配
dataset = pd.DataFrame(parkingList, columns=columnnames)
dataset.to_excel("outputparking.xlsx", index=False)
time.sleep(5)

关键修改说明

  • 初始化空列表:将parkingList初始化为[],通过append()方法收集每个停车区域的数据行,保证最终是二维结构。
  • 遍历优化:直接遍历ParkingAreas中的每个ID,替代range(len())的写法,代码更简洁。
  • 缩进修正:确保仿真循环结束后再执行停车区域数据收集,逻辑顺序正确。
  • DataFrame参数简化:去掉不必要的index=None,columns参数与二维列表的列数完全匹配。

内容的提问来源于stack exchange,提问作者ASh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:15:33