es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Un solo archivo de salida CSV con datos en diferentes columnas

Tengo una serie de archivos CSV con datos solo en las primeras tres columnas. Quiero copiar los datos de cada archivo CSV y pegarlos en un solo archivo CSV en orden de columna. Por ejemplo, los datos del primer archivo CSV se colocan en las columnas 1, 2 y 3 del archivo de salida. De manera similar, los datos del segundo archivo CSV van a las columnas 4, 5 y 6 del mismo archivo CSV de salida, y así sucesivamente. Cualquier ayuda sería muy apreciada. Gracias.

He probado el siguiente código pero me da el resultado en las mismas columnas solamente.

import glob
import pandas as pd
import time
import numpy as np
start = time.time()

NombreArchivo = ‘Datos_Combinados.csv’

extension = ‘csv’
todos_archivos = [i for i in glob.glob(‘*.{}’.format(extension))]

for i in range(len(todos_archivos)):
datos= pd.read_csv(todos_archivos[i],skiprows=23)
datos= datos.rename({‘G1’: ‘CH1’, ‘G2’: ‘CH2′,’Dis’: ‘CH3’},axis=1)
datos= datos[[‘CH1′,’CH2′,’CH3′]]
datos= datos.apply(pd.to_numeric, errors=’coerce’)
print(todos_archivos[i])
if i == 0:
datos.to_csv(NombreArchivo,sep=’,’,index=False,header=True,mode=’a’)
else:
datos.to_csv(NombreArchivo,sep=’,’,index=False,header=False,mode=’a’)

end = time.time()
print((end – start),’Segundos (Tiempo de ejecución)’)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, podemos modificar el código utilizando el método de Pandas concat, que combinará los datos del archivo CSV horizontalmente. Así es como se ve el código actualizado:

    import glob
    import pandas as pd
    import time
    
    start = time.time()
    
    extension = 'csv'
    all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
    
    # Combinar los datos CSV horizontalmente según el orden de las columnas deseadas
    combined_data = pd.concat([pd.read_csv(f, usecols=[0,1,2]) for f in all_filenames], axis=1)
    
    # Renombrar las columnas según su posición en el archivo CSV de salida
    col_names = ['Columna {}'.format(i) for i in range(1, len(combined_data.columns) + 1)]
    combined_data.columns = col_names
    
    # Exportar los datos combinados como un archivo CSV
    combined_data.to_csv('Output.csv', index=False)
    
    end = time.time()
    print((end - start), 'Segundos (Tiempo de ejecución)')
    

    El parámetro usecols se utiliza para seleccionar solo las primeras tres columnas de cada archivo CSV. El método concat se utiliza para combinar los datos horizontalmente. La lista col_names se crea para nombrar las columnas del archivo CSV de salida según su posición. Por último, se llama al método to_csv para escribir los datos combinados en un nuevo archivo CSV llamado “Output.csv”. Adicionalmente, el parámetro index=False se utiliza para evitar escribir una columna de índice en el archivo CSV de salida.

Comments are closed.