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.

Permitiendo que Python importe CSV con nombres de columnas duplicados en Python.

Tengo un marco de datos que se ve así:
Hay un total de 109 columnas. Cuando importo los datos usando read_csv agrega “.1”, “.2” a los nombres duplicados. ¿Hay alguna manera de evitarlo?

He intentado lo siguiente:

df = pd.read_csv(r'C:\Users\agns1\Downloads\treatment1.csv', encoding="ISO-8859-1", sep='|', header=None)
df = df.rename(columns=df.iloc[0], copy=False).iloc[1:].reset_index(drop=True)

Pero cambió el marco de datos y no fue útil. Esto es lo que hizo con mis datos.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto especializado en pandas, dataframe, csv, duplicados y múltiples columnas, puedo sugerir una posible solución al problema mencionado.

    Cuando se importa un archivo CSV con columnas que tienen nombres duplicados, pandas automáticamente agrega un “.1”, “.2”, etc. al final de los nombres de columna duplicados para hacerlos únicos. Sin embargo, si queremos evitar esto, podemos hacer lo siguiente:

    1. Abra el archivo CSV en un editor de texto o un software de hoja de cálculo como Excel.
    2. Renombre manualmente los nombres de columna duplicados agregando un prefijo o sufijo a ellos, por ejemplo, “col1” y “col1_dup”.

    3. Guarde el archivo CSV editado con los nuevos nombres de columna.

    4. Ahora, al usar la función read_csv en pandas, establezca el parámetro “names” en una lista de los nuevos nombres de columna que coincidan con el archivo CSV editado.

    Por ejemplo:

    import pandas as pd
    
    nombres_columnas = ["col1", "col2", "col3", "col1_dup", "col2_dup"]
    
    df = pd.read_csv('mi_data.csv', names=nombres_columnas)
    

    Esto creará un marco de datos con los nombres de columna originales sin sufijos añadidos para los nombres de columna duplicados.

    Alternativamente, si desea mantener los nombres de columna originales y eliminar los sufijos agregados por pandas, puede utilizar el método str.replace en los nombres de columna después de leer el archivo CSV. Por ejemplo:

    df.columns = df.columns.str.replace('.\d+', '')
    

    Esto eliminará cualquier sufijo (“.1”, “.2”, etc.) de los nombres de columna y le dará los nombres de columna originales.

    ¡Espero que esto ayude!

Comments are closed.