Cómo agregar una fila de encabezado a un DataFrame de pandas

3 minutos de lectura

avatar de usuario
secuencia_dura

Estoy leyendo un archivo csv en pandas. Este archivo csv consta de cuatro columnas y algunas filas, pero no tiene una fila de encabezado, que quiero agregar. He estado intentando lo siguiente:

Cov = pd.read_csv("path/to/file.txt", sep='\t')
Frame=pd.DataFrame([Cov], columns = ["Sequence", "Start", "End", "Coverage"])
Frame.to_csv("path/to/file.txt", sep='\t')

Pero cuando aplico el código, me sale el siguiente error:

ValueError: Shape of passed values is (1, 1), indices imply (4, 1)

¿Qué significa exactamente el error? ¿Y cuál sería una forma limpia en Python de agregar una fila de encabezado a mi archivo csv/pandas df?

  • Aquí hay una interpretación diferente de su pregunta: agregue otro encabezado a un marco de datos existente para crear un índice múltiple.

    – cs95

    24 de mayo de 2019 a las 6:44

avatar de usuario
Leb

Puedes usar names directamente en el read_csv

nombres: similar a una matriz, predeterminado Ninguno Lista de nombres de columna a usar. Si el archivo no contiene una fila de encabezado, debe pasar explícitamente header=None

Cov = pd.read_csv("path/to/file.txt", 
                  sep='\t', 
                  names=["Sequence", "Start", "End", "Coverage"])

  • @Leb, tuve exactamente el mismo problema y probé tu solución. Obtuve los encabezados de la tabla, pero la primera fila también fue reemplazada por los mismos nombres de encabezado. ¿Qué debo hacer ahora?

    – 007mrvíbora

    13 de noviembre de 2018 a las 18:28

  • agrega más columnas a mis datos, todo con NaN atributos Fue porque mi separador es un espacio vacío.

    – SalahAdDin

    23 de enero de 2020 a las 13:32


  • ¿Hay alguna razón por la que si crea un DataFrame, el atributo se llama una cosa y un archivo csv se llama otra cosa? Creo que hay como 3 nombres diferentes para este atributo de etiqueta de encabezado según la función que esté utilizando.

    – demongolem

    31 de agosto de 2020 a las 11:49

avatar de usuario
Antón Protopopov

Alternativamente, puede leer su csv con header=None y luego agregarlo con df.columns:

Cov = pd.read_csv("path/to/file.txt", sep='\t', header=None)
Cov.columns = ["Sequence", "Start", "End", "Coverage"]

  • El código es bueno, pero descubrí que en un marco de datos vacío no funcionará. En ese caso, Python arroja “ValueError: Longitud no coincidente: el eje esperado tiene 0 elementos, los nuevos valores tienen … elementos”. Es posible que necesite algo como stackoverflow.com/questions/44513738/…

    – Alejandro Jean

    31 de julio de 2021 a las 3:26


avatar de usuario
Bhardwaj Joshi

col_Names=["Sequence", "Start", "End", "Coverage"]
my_CSV_File= pd.read_csv("yourCSVFile.csv",names=col_Names)

Habiendo hecho esto, solo verifíquelo con:

my_CSV_File.head()

Para arreglar su código, simplemente puede cambiar [Cov] a Cov.valuesel primer parámetro de pd.DataFrame se convertirá en un multidimensional numpy formación:

Cov = pd.read_csv("path/to/file.txt", sep='\t')
Frame=pd.DataFrame(Cov.values, columns = ["Sequence", "Start", "End", "Coverage"])
Frame.to_csv("path/to/file.txt", sep='\t')

Pero la solución más inteligente sigue siendo el uso pd.read_excel con header=None y names=columns_list.

avatar de usuario
Shoaib Muhammad Arif

Solución simple y fácil:

import pandas as pd

df = pd.read_csv("path/to/file.txt", sep='\t')
headers =  ["Sequence", "Start", "End", "Coverage"]
df.columns = headers

NOTA: Asegúrese de que la longitud del encabezado y la longitud del encabezado del archivo CSV no coincidan.

avatar de usuario
usuario3636989

Dado que se menciona que estamos leyendo desde un csv, el delimitador debe ser ','[as default, not need to mention]' and the given file has no header so encabezado=Ninguno`

Código de muestra :

import pandas as pd
data = pd.read_csv('path/to/file.txt',header=None)
data.columns = ["Sequence", "Start", "End", "Coverage"]
print(data.head()) #Print the first rows

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad