Lea el csv encuentro de dos tiempos

archivo csv se lee y se utiliza para doble circuito

En una reciente lectura de un volumen de datos de un millón de archivo csv, con el fin de integrar sus datos, utilice el doble ciclo, pero los resultados están lejos de ser satisfactoria, excepto para el primer lote de datos pueden ser procesados ​​con normalidad, y el resto no lee, después de las pruebas se encontró el problema

Dian encontró un problema

Para los datos de proceso, los datos son primero Identificación del pre-extraído

id_union = [776001, 776002, 776003, 776004, 776005, 776006, 776007, 776008, 776009, 776013, 776016, 776018, 776021,776030, 776031, 776032, 776033, 776034, 776035, 776999]

Bis leer los datos y el procesamiento de bucle

with open('model_3.csv', 'r') as f:
    initial_data = csv.reader(f)
    lv_ranks = {}
    for node_id in id_union:
        lv_ranks['lv_' + str(node_id)] = []
        for i in initial_data:
            if i[5] == str(node_id):
                lv_ranks['lv_' + str(node_id)].append(float(i[6]))

    # print(lv_ranks)

Además de los anteriores resultados de la primera ID de impresión es el valor de la clave, esta última están vacías, por qué se produce el problema, no pudo encontrar la clave, no existe el primer ciclo de doble circuito de la muerte, restablezca el diccionario no existe, y en segundo lugar me el doble bucle en un conjunto de datos de un solo ciclo puede venir bien, si el juez no explicó el problema, atrapado en un dilema, Baidu no encuentra la respuesta que desea

Dos Dian tratar de resolver

El problema se reduce a atravesar dos listas, debido a la gran cantidad de datos, los problemas en la operación encontraron difícil de tratar, por lo que voy a enumerar dos para agilizar el más simple, y reproducir el proceso de doble circulación

a = ["1", "2", "3", "4", "5"]

b = [(1, "1"), (2, "2"), (3, "3"), (4, "4"), (5, "5")]

c = {}
for i in a:
    c[i] = []
    for j in b:
        if j[1] == i:
            c[i].append(j[0])

print(c)

Los resultados de la impresión del fragmento de código anterior como se esperaba, por lo que vagamente adivinado la causa del problema, seguido de un intento

with open('model_3_预测1月.csv', 'r') as f:
    initial_data = csv.reader(f)
    
    initial_data = list(initial_data)

    lv_ranks = {}
    for node_id in id_union:
        lv_ranks['lv_' + str(node_id)] = []
        for i in initial_data:
            if i[5] == str(node_id):
                lv_ranks['lv_' + str(node_id)].append(float(i[6]))

    # print(lv_ranks)

Voy a leer los resultados anteriores a CSV, transformados en una lista lista, realmente resolver el problema, entonces yo no sé la razón

Mier y resumen tema

Tipo de conversión involucrado aquí se describe la lista de lectura no es el resultado del tipo de archivo CSV, pero debe ser de tipo iterativo, impresa bajo el resultado de lectura tipo de datos csv

No ser lista aparente de tipos de datos, pero el recorrido, cada fila de datos es una lista, el tipo de lista está presente en cada cadena de datos de nuevo, esto debe de interrogación para ser convertidos en el tipo de lista a completa doble ciclo.

Por qué se debe dicha operación, nunca he entendido, debe ser porque los tipos de datos csv no pueden estar ciclo secundario, o introduzca el tipo de datos inconsistentes circulación antes de la lectura, después de varias horas de enredado, se puede considerar para resolver el problema

Supongo que te gusta

Origin www.cnblogs.com/Zhao01/p/12660368.html
Recomendado
Clasificación