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.

Cómo crear un archivo .dat con espacios múltiples como delimitador a partir de un archivo .xlsx

Tengo un archivo xlsx, donde cada fila corresponde a una muestra con características asociadas en cada columna, como se muestra aquí:
ejemplo de archivo xlsx

Estoy tratando de convertir este archivo xlsx en un archivo dat, con varios espacios que separan las columnas, como se muestra en el ejemplo a continuación:

muestras      propiedad  característica1  característica2  característica3
muestra1       3.0862    0.8626    0.7043    0.6312
muestra2       2.8854    0.7260    0.7818    0.6119
muestra3       0.6907    0.4943    0.0044    0.4420
muestra4       0.9902    0.0106    0.0399    0.9877
muestra5       0.7242    0.0970    0.3199    0.5504

He intentado hacer esto creando un dataframe en pandas y usando dataframe.to_csv para guardar el archivo como .dat, pero solo me permite usar un solo carácter como delimitador. ¿Alguien sabe cómo podría crear un archivo como el anterior?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear un archivo .dat con varias espacios que separan las columnas, puedes utilizar el parámetro sep en la función to_csv de pandas para especificar un delimitador personalizado. En este caso, puedes utilizar ‘ ‘ (un espacio en blanco) como delimitador.

    Aquí tienes un ejemplo de código para lograr esto:

    import pandas as pd
    
    # Carga tu archivo xlsx en un DataFrame de pandas
    df = pd.read_excel('ruta/a/tu/archivo.xlsx')
    
    # Escribe el DataFrame en un archivo .dat, utilizando espacios como delimitador
    df.to_csv('ruta/a/tu/archivo.dat', sep=' ', index=False)
    

    Esto debería crear un archivo .dat con los datos en el formato que especificaste, con uno o más espacios separando cada columna. El parámetro index=False asegurará que el índice de filas no se incluya en el archivo de salida.

Comments are closed.