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.

¿Los encabezados de las columnas de un dataframe de pandas no están siendo reconocidos?

Tengo 3 dataframes de pd, y por alguna razón solo 2 de ellos tienen este problema, aunque los 3 fueron creados de la misma manera.
Los importé de la siguiente manera:

df1= pd.read_csv(‘rutaarchivo.csv’)
df2 = pd.read_csv(‘rutaarchivo2.csv’)
df3 = pd.read_csv(‘rutaarchivo3.csv’)

El código que llama a las columnas de los dataframes se ve así:

features = df2[‘f1’, ‘f2’, ‘f3’, ‘f4’, ‘f5’, ‘f6’]
target = df2[‘t’]
x = df2[features]
y = df2[target]

Y aunque esto funcionó para el primer dataframe, para df2 y df3 no lo hace. Recibo un error de clave cuando se ejecuta el código:

KeyError: (‘f1’, ‘f2’, ‘f3’, ‘f4’, ‘f5’, ‘f6’)

Mientras que df2.keys() devuelve esto:

Index([‘f0’, ‘f1’, ‘f3’, ‘f4’, ‘f5’, ‘f6’, ‘f7’, ‘t’], dtype=’object’)

y

print(dfPNC.columns.tolist())

devuelve esto:

[‘f1’, ‘f2’, ‘f3’, ‘f4’, ‘f5’, ‘f6’, ‘f7’, ‘t’]

He intentado solucionarlo con estos métodos, sin embargo no he tenido éxito:

sep=r’\s,\s‘ #al leer el csv

sep = r’,’, skipinitialspace = True, engine = ‘python’ #segundo intento al leer el csv

features = [[‘f1′,’f2’, ‘f3’, ‘f4’, ‘f5’, ‘f6’, ‘f7’]] #tercer intento, sin embargo genera un error booleano

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que las columnas ‘f1’, ‘f2’, ‘f3’, ‘f4’, ‘f5’ y ‘f6’ no existen en df2 y df3, por lo tanto, se produce un Key Error.

    A partir de la salida de df2.keys() y dfPNC.columns.tolist(), parece que los nombres de las columnas son diferentes a los utilizados en la variable features.

    Para solucionar esto, podemos actualizar la variable features para que utilice los nombres correctos de las columnas para cada dataframe. Por ejemplo:

    # para df1
    features = ['col1', 'col2', 'col3']
    
    # para df2
    features = ['f0', 'f1', 'f3', 'f4', 'f5', 'f6', 'f7']
    
    # para df3
    features = ['f1_new', 'f2_new', 'f3_new', 'f4_new', 'f5_new', 'f6_new', 'f7_new']
    

    Tendríamos que actualizar también las variables target, x e y en consecuencia. Al hacer esto, el código debería funcionar para los tres dataframes.

Comments are closed.