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.

Traduciendo script de MATLAB a script de Python con código de matrices.

Estaba pensando cómo puedo traducir el siguiente código a Python desde un script de MATLAB.
Especialmente el contenido dentro del bucle for y la última línea de código writematrix, en las que he estado atascado. Este programa codifica la copia de la segunda fila de todas las columnas de cada archivo de excel dentro de una carpeta y crea un archivo de excel de salida en la misma carpeta que contiene la segunda fila de todas las columnas de cada archivo de excel dentro de la carpeta en una matriz única.
Gracias y feliz año nuevo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para traducir el script de Matlab dado a Python, puedes seguir los siguientes pasos:

    1. Elimina las líneas “clc” y “clearvars” ya que no son necesarias.
    2. Definir las importaciones necesarias al principio de tu script de Python. Deberás importar el módulo “os”, la biblioteca “pandas” y la biblioteca “natsort”.

    3. Define la variable “fileDir” como la ruta del directorio donde se encuentran los archivos CSV.

    4. Define la variable “outfile” como el nombre del archivo de salida con la extensión “.xlsx”.

    5. Usa la función “os.listdir()” para obtener una lista de todos los archivos en el directorio.

    6. Usa la función “natsort.natsorted()” para ordenar la lista de nombres de archivo en orden natural.

    7. Usa la función “pandas.read_csv()” para cargar cada archivo CSV y extraer la segunda columna usando el método “iloc()”.

    8. Agrega la segunda columna a la lista “second_col”.

    9. Usa la función “pandas.DataFrame()” para crear un DataFrame a partir de la lista “second_col”.

    10. Escribe el DataFrame en un archivo de Excel usando el método “pandas.DataFrame.to_excel()”.

    Aquí tienes el script en Python que implementa los pasos anteriores:

    import os
    import pandas as pd
    from natsort import natsorted
    
    fileDir = os.getcwd()
    outfile = 'OUT.xlsx'
    fileNames = os.listdir(fileDir)
    fileNames_sorted = natsorted(fileNames)
    second_col = []
    
    for f in fileNames_sorted:
        df = pd.read_csv(os.path.join(fileDir, f))
        second_col.append(df.iloc[:, 1])
    
    df_result = pd.DataFrame(second_col)
    df_result = df_result.transpose()
    
    df_result.to_excel(os.path.join(fileDir, outfile), index=False)
    

    ¡Espero que esto te ayude! ¡Feliz año nuevo para ti también!

Comments are closed.