Saltar al contenido

Pandas DataFrame lista almacenada como cadena: ¿Cómo convertir de nuevo a la lista?

Solución:

Como señaló, esto puede suceder comúnmente al guardar y cargar pandas DataFrames como .csv archivos, que es un formato de texto.

En su caso, esto sucedió porque los objetos de la lista tienen una representación de cadena, lo que les permite almacenarse como .csv archivos. Cargando el .csv luego producirá esa representación de cadena.

Si desea almacenar los objetos reales, debe usar DataFrame.to_pickle() (nota: ¡los objetos deben ser decapables!).

Para responder a su segunda pregunta, puede volver a convertirla con ast.literal_eval:

>>> from ast import literal_eval
>>> literal_eval('[1.23, 2.34]')
[1.23, 2.34]

Puedes usar pandas directamente –
df = pd.read_csv(df_name, converters={'column_name': eval})

Esto leerá esa columna como su correspondiente tipo d en python en lugar de una cadena.

Me acabo de encontrar con este problema y hay una solución muy simple (pandas.eval ()). Estoy usando pandas 0.20.0.

# SETUP
import pandas as pd
import io

csv = io.StringIO(u'''
id  list
A1  [1,2]
A2  [3,4]
A3  [5,6]
''')

df = pd.read_csv(csv, delim_whitespace = True)

# TYPE CHECK <type 'str'>
print type(df.at[0, 'list'])

# MAIN CONVERSION
df['list'] = pd.eval(df['list'])

# TYPE CHECK <type 'list'>
print type(df.at[0, 'list'])
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *