Haciendo diccionario en diccionario para separar datos por los mismos valores en una columna y luego desde la segunda columna

Clotqqno

Soy nuevo en Python y tengo un problema desde hace unos días. Hice un guión que:

-Toma los datos del archivo CSV -Ordenarlos por los mismos valores en la primera columna del archivo de datos -Insertar los datos ordenados en la línea de campo específico en un archivo de texto de plantilla diferente -Guardar el archivo en tantas copias como valores diferentes haya en la primera columna del archivo de datos Esto La siguiente imagen muestra cómo funciona:

ingrese la descripción de la imagen aquí

But there are two more things I need to do. When in separate files as showed above, there are some of the same values from second column of the data file, then this file should insert value from third column instead of repeating the same value from second column. On the picture below I showed how it should look like:

ingrese la descripción de la imagen aquí

What I also need is to add somewhere separeted value of first column from data file by "_".

There is datafile:

111_0,3005,QWE
111_0,3006,SDE
111_0,3006,LFR
111_1,3005,QWE
111_1,5345,JTR
112_0,3103,JPP
112_0,3343,PDK 
113_0,2137,TRE
113_0,2137,OMG

and there is code i made:

import shutil

with open("data.csv") as f:
    contents = f.read()
    contents = contents.splitlines()

values_per_baseline = dict()

for line in contents:
    key = line.split(',')[0]
    values = line.split(',')[1:]
    if key not in values_per_baseline:
        values_per_baseline[key] = []
    values_per_baseline[key].append(values)

for file in values_per_baseline.keys():
    x = 3
    shutil.copyfile("of.txt", (f"of_%s.txt" % file))
    filename = f"of_%s.txt" % file
    for values in values_per_baseline[file]:
        with open(filename, "r") as f:
            contents = f.readlines()
            contents.insert(x, '      o = ' + values[0] + '\n          ' + 'a = ' + values[1] +'\n')
        with open(filename, "w") as f:
            contents = "".join(contents)
            f.write(contents)
            f.close()

I have been trying to make something like a dictionary of dictionaries of lists but I can't implement it in correct way to make it works. Any help or suggestion will be much appreciated.

Timus

You could try the following:

import csv
from collections import defaultdict


values_per_baseline = defaultdict(lambda: defaultdict(list))
with open("data.csv", "r") as file:
    for key1, key2, value in csv.reader(file):
        values_per_baseline[key1][key2].append(value)

x = 3
for filekey, content in values_per_baseline.items():
    with open("of.txt", "r") as fin,\
         open(f"of_{filekey}.txt", "w") as fout:
        fout.writelines(next(fin) for _ in range(x))
        for key, values in content.items():
            fout.write(
                f'      o = {key}\n'
                + '          a = '
                + ' <COMMA> '.join(values)
                + '\n'
            )
        fout.writelines(fin)

La parte de lectura de entrada está utilizando el csvmódulo de la biblioteca estándar (por conveniencia) y un archivo defaultdict. El archivo se lee en un diccionario anidado.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

teclas de diccionario para reemplazar cadenas en la columna de marco de datos de pandas con valores de diccionario y realizar una evaluación

Reemplace los valores de la columna de pandas usando una clave en otra columna y el valor de un diccionario

Itere las filas en el marco de datos de pandas y haga coincidir los valores en un diccionario de listas para crear una nueva columna

Buscar valor en un marco de datos y luego poner el valor correspondiente del diccionario en una nueva columna

Agrupar los mismos valores en una columna

Cómo separar un diccionario en una columna en dos columnas separadas con una lista de claves en una y una lista de valores en otra en Python

Escriba el diccionario de Python en columnas CSV: claves para la primera columna, valores para la segunda

alteración de los valores de uso en el diccionario para reemplazar los valores en la columna

los pandas crean una columna y le asignan valores desde un diccionario

Divida un csv según los valores en una columna y luego combine / vincule la salida por fila

Divida un csv según los valores en una columna y luego combine / vincule la salida por fila

¿Cómo separar un diccionario por una clave en Python y al mismo tiempo analizar los datos?

reemplace los valores de una columna en un Spark DF por valores-clave del diccionario (pyspark)

Compare los valores en la misma columna y agregue el resultado en una segunda columna en R

Convertir el marco de datos de pandas en un diccionario donde las claves son el índice y los valores son la lista de valores de columna

¿Cómo encontrar los mismos valores y marcarlos en una columna separada en un marco de datos en Python?

Python Pandas: ¿Cómo puedo sumar todos los valores de un diccionario en una columna de mi marco de datos?

Desde Pandas Dataframe encuentre valores únicos en la columna y vea si esos valores tienen los mismos valores en otra columna

Cree un diccionario desde csv con solo todos los datos en solo 1 columna

Encuentre duplicados en una columna y luego copie los datos a otra columna en VBA

¿Cómo extraer las claves y valores de un diccionario como una columna separada en un marco de datos?

¿Cómo extraer las claves y valores de un diccionario como una columna separada en un marco de datos?

Asignar valores de diccionario a valores clave en una columna de marco de datos

Usar una columna en un marco de datos de Pandas como búsqueda para elegir una segunda columna en el mismo df, dos veces, y luego hacer una comparación de los resultados

Cuente la columna B value_counts para los mismos valores en la columna A

Copiando el nombre de la columna como clave de diccionario en todos los valores de la columna en el marco de datos de Pyspark

Hive seleccione una columna basada en una segunda columna donde los valores de la segunda columna son diferentes

¿Cómo verifico si los datos en una columna ya existen y para verificar que la segunda columna de esa fila sea igual a un número específico?

creando una nueva columna basada en la columna existente usando un diccionario para un Pandas df

TOP Lista

CalienteEtiquetas

Archivo