ASh
ASh

Reputation: 13

pandas with Sumo traci: error raise valueError: Shape of passed values is (7, 1), indices imply (7, 7)

hello I'm working with Traci libary in Sumo in python as i'm trying to get all trace information and put it in excel file
and i get this error when i pass the data to dataframe can anyone help me where is it wrong and how to fix it??

Traceback (most recent call last): dataset = pd.DataFrame(parkingList, index=None ,columns=columnnames) _check_values_indices_shape_match(values, index, columns) raise ValueError(f"Shape of passed values is {passed}, indices imply {implied}") ValueError: Shape of passed values is (7, 1), indices imply (7, 7)

here is my code :

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

 ParkingAreas = traci.parkingarea.getIDList();

    for i in range(0,len(ParkingAreas)):

      paid = ParkingAreas[i]
      lane = traci.parkingarea.getLaneID(ParkingAreas[i])
      startpos = traci.parkingarea.getStartPos(ParkingAreas[i])
      endpos =  traci.parkingarea.getEndPos(ParkingAreas[i])
      vehCount = traci.parkingarea.getVehicleCount(ParkingAreas[i])
       vehid = traci.parkingarea.getVehicleIDs(ParkingAreas[i])

  parkingList = [getdatetime(), paid, lane, startpos, endpos, vehCount, vehid]


   traci.close()

    #Generate Excel file
columnnames = ['dateandtime', 'parkingAreaID', 'Lane', 'start pos', 'end pos', 
 'numVehStops', 'vehIDsAtStop']

dataset = pd.DataFrame(parkingList,  index=None ,columns=columnnames)

dataset.to_excel("outputparking.xlsx", index=False)
time.sleep(5)

Upvotes: 0

Views: 69

Answers (1)

Michael
Michael

Reputation: 3680

when collecting the data you probably want to do something like

parkingList.append((getdatetime(), paid, lane, startpos, endpos, vehCount, vehid))

to add another row to your data collection. This also means you will need to initialize the parkingList as an empty list in the beginning

Upvotes: 0

Related Questions