Python - Linea 0 en txt como nombre de columna DF Pandas

 
Vista:
Imágen de perfil de Drowels
Val: 53
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Linea 0 en txt como nombre de columna DF Pandas

Publicado por Drowels (21 intervenciones) el 23/03/2021 09:52:17
Hola, necesitaría un poco de ayuda en esto que no se como resolver.

Estoy tratando de sacar el valor de la línea 0 que me genera un sensor en el archivo sensor1.txt y poder utilizar ese valor str(cadena de texto) como nombre de una columna para Pandas. No lo consigo y no sé si es posible.

La variable linea adquiere el valor bien, si lo imprimo lo veo. En new_columns es cuando me falla. Quiero que el valor linea se cambie a test.

La necesidad de hacer esto es porque los datos que envía el sensor a sensor.txt van cambiando, por lo que no siempre tengo los mismos resultados.

1
2
3
4
5
6
with open("sensor1.txt") as f:
    linea = f.readlines()[0]
 
new_columns = {linea : 'test'}
df.rename(columns = new_columns, inplace=True)
df.columns

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Linea 0 en txt como nombre de columna DF Pandas

Publicado por joel (901 intervenciones) el 23/03/2021 10:58:21
Hola Drowels, para renombrar la columna, parece que lo haces correctamente... lo unico, que tendras que tener en cuenta, que el contenido de la variable linea sea una cadena que exista como columna en el dataframe.

Cuando haces el df.columns, te devuelve el mismo texto que el valor que tiene la variable linea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Drowels
Val: 53
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Linea 0 en txt como nombre de columna DF Pandas

Publicado por Drowels (21 intervenciones) el 23/03/2021 11:46:29
No, me devuelve este error AttributeError: 'DataFrame' object has no attribute 'test'

Pero si hago un print(linea) si que me devuelve lo almacenado en linea. Estoy dudando si debería crear un return o de que manera podría capturar.

Las pruebas las estoy realizando desde Juoyter. Te adjunto un zip con la hoja de Jupyter, el mísmo código pegado en un archivo .py y el .txt que estoy utilizando. Creo que será más sencillo de entender y es mucho código para pegar aquí.

Un saludo.

EDITO: Acabo de descubrir lo que pasa, me guarda la variable sin las comillas de cadena de texto. Si ahora yo creo una variable linea = "nombre", si que me genera la columna con nombre, por lo que el error lo tengo a la hora de guardar la variable. Voy a ver como lo puedo arreglar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Drowels
Val: 53
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Linea 0 en txt como nombre de columna DF Pandas

Publicado por Drowels (21 intervenciones) el 23/03/2021 12:53:50
Lo tengo,

El problema que tenía es que la variable línea se guardaba con un salto de linea al final "/n". Como le indico que lea la linea 0 del .txt, no se el motivo por el que me guarda la variable con el salto de línea. Luego cuando la llamo desde el diccionario da error, ya que no puede llamar a un string con salto de línea.

Pero cuando imprimir lines print(linea) se ve todo normal. Así que utilicé print(list(linea)) y es cuando me chivó lo del salto de línea. Con [:-1] lo que hago es borrar lo último del string y ya tengo lo que busco.

1
2
3
4
5
6
with open("impedance_70000.txt") as f:
    linea = f.readlines()[0][:-1]
 
new_columns = {linea : 'test'}
df.rename(columns = new_columns, inplace=True)
df.columns

Entiendo que el programa puede estar más depurado, pero bueno, a ver si voy mejorando. Por ahora va haciendo lo que pido.

Muchas gracias por todo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Linea 0 en txt como nombre de columna DF Pandas

Publicado por joel (901 intervenciones) el 23/03/2021 16:07:42
Ha, perfecto!!!

Gracias por compartirlo Drowels...

Por si te puede servir, con strip() también eliminas los saltos de linea y espacios...
1
linea = f.readlines()[0].strip()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar