2012-07-26 13 views
5

Estoy recuperando algunos datos web, analizándolo y almacenando el resultado como un Pandas DataFrame en un archivo HDF5. Justo antes de escribir el DataFrame en el archivo H5, agrego mi propia cadena de descripción para anotar algunos metadatos sobre el origen de los datos y si algo salió mal al analizarlo.Agregar mi propio atributo de descripción a un Pandas DataFrame

In [1]: my_data_frame.desc = "Some string about the data" 

In [2]: my_data_frame.desc 

Out[1]: "Some string about the data" 

In [3]: print type(my_data_frame) 
<class 'pandas.core.frame.DataFrame'> 

Sin embargo, después de cargar los mismos datos con pandas.io.pytables.HDFStore(), mi agregado desc atributo no está y me sale el error: AttributeError: 'DataFrame' object has no attribute 'desc' como si nunca hubiera añadido este nuevo atributo.

¿Cómo puedo obtener que mis descripciones de metadatos persistan como un atributo adicional del objeto DataFrame? (¿O existe algún atributo existente y reconocido de un DataFrame que pueda secuestrar para mis metadatos?)

Respuesta

1

Agregar metadatos de DataFrame o metadatos por columna está en la hoja de ruta pero aún no se ha implementado. Sin embargo, estoy abierto a ideas sobre cómo debería ser la API.

+0

¿Sabes si es posible sobrescribir el atributo '__doc__', o está destinado a un DataFrame? Estoy descubriendo que cuando intento sobreescribirlo y luego cargar el objeto desde H5, el docstring es realmente 'None'. No conserva mi nueva docstring, pero tampoco revierte a la docstring normal. – ely

+0

Además, una solución simple para mí sería escribir un diccionario en el archivo H5, con una clave 'data' para el DataFrame y una clave 'description' para la descripción de mi cadena. Pero esto da un error clave. ¿Es esto un error con H5py/PyTables? ¿Seguramente debería poder almacenar matrices de datos no rectangulares en H5? – ely

+0

Lo siento, al volver a leer que puede haber sonado crítico. No quise decir usted (o Pandas) específicamente, sino más bien HDF5. Supongo que puede acomodar un diccionario, pero tal vez el PyTables HDFStore que se utiliza es exclusivo de un objeto pandas. – ely

Cuestiones relacionadas