[Python] Problema ao ler meu CSV organizado por linhas com pandas PYTHON [fechada]

Discussão em 'Python' iniciado por Stack, Setembro 26, 2024.

  1. Stack

    Stack Membro Participativo

    Atualmente tenho um CSV sendo gerado por um programa, só que preciso extrair as informações dele de forma optimizada e conectada, ou seja, o primeiro valor da linha 1 ser o mesmo da linha 2 etc... Só que o único jeito que eu encontrei de ler até o momento foi dessa maneira, mas ao pegar o regionID e sincronizar com o resto das informações os resultados estão ficando desincronizados.

    def process_csv_folder(file_path, inspection):
    parsed_data = {
    "Time": None,
    "Objects": []
    }

    with open(file_path, 'r', encoding='utf-8') as file:
    lines = file.readlines()
    if inspection == 0:
    temp_objects = {}
    for line in lines:
    line = line.strip()
    if line.startswith("Time"):
    parsed_data["Time"] = line.split(",")[1].replace(";", "")
    elif line.startswith("Object name"):
    object_names = line.split(",")[1::3]
    for name in object_names:
    name_split = name.split("_")
    conector_name = name_split[0]
    status = "NG" if len(name_split) > 1 and name_split[1] == "NG" else "OK"
    temp_objects[conector_name] = {"Nome": conector_name, "Status": status}
    elif line.startswith("Object score"):
    object_scores = line.split(",")[1::3]
    for obj, score in zip(temp_objects.values(), object_scores):
    if obj["Status"] == "NG":
    obj["Score"] = score

    for conector in conector_model:
    if conector not in temp_objects:
    temp_objects[conector] = {"Nome": conector, "Status": "OK"}

    parsed_data["Objects"] = list(temp_objects.values())

    elif inspection == 1:
    temp_objects = {}
    region_y_values = {}

    for line in lines:
    line = line.strip()
    if line.startswith("Time"):
    parsed_data["Time"] = line.split(",")[1].replace(";", "")
    elif line.startswith("Object RegionID"):
    object_region_ids = line.split(",")[1::3]
    for region_id in object_region_ids:
    region_id = region_id.strip()
    temp_objects[region_id] = {
    "RFID": region_to_rfid.get(int(region_id), "Unknown"),
    "Status": "OK"
    }
    elif line.startswith("Object rec Y"):
    object_rec_ys = line.split(",")[1::3]
    for region_id, rec_y in zip(temp_objects.keys(), object_rec_ys):
    rec_y = float(rec_y.strip())
    if int(region_id) == 32:
    if region_id not in region_y_values or rec_y > region_y_values[region_id]:
    region_y_values[region_id] = rec_y

    if 32 in region_y_values and region_y_values[32] == max(region_y_values.values()):
    temp_objects["32"]["ID"] = "CP41"

    for line in lines:
    line = line.strip()
    if line.startswith("Object name"):
    object_names = line.split(",")[1::3]
    for obj, name in zip(temp_objects.values(), object_names):
    name_split = name.split("_")
    obj["Value"] = name_split[0]
    if len(name_split) > 1 and name_split[1] == "NG":
    obj["Status"] = "NG"
    elif line.startswith("Object score"):
    object_scores = line.split(",")[1::3]
    for obj, score in zip(temp_objects.values(), object_scores):
    if obj["Status"] == "NG":
    obj["Score"] = score

    for region_id, rfid in region_to_id.items():
    if str(region_id) not in temp_objects:
    temp_objects[str(region_id)] = {
    "ID": id,
    "Status": "OK"
    }

    parsed_data["Objects"] = list(temp_objects.values())

    return parsed_data


    Exemplo do CSV do inspection 1 anexado na foto. Não descobri como anexar o arquivo.csv

    Tentei de diversas formas usar o pandas, mas sempre da erro de inconsistência e também com o modo que estou utilizando atualmente não é nem um pouco recomendado.

    Continue reading...

Compartilhe esta Página