Dividir / Explotar una columna de diccionarios en columnas separadas con pandas

| | | | | | | | | | | | | | | |

Tengo datos guardados en una base de datos postgreSQL. Estoy consultando estos datos usando Python2.7 y convirtiéndolos en un Pandas DataFrame. Sin embargo, la última columna de este marco de datos tiene un diccionario de valores dentro. El DataFrame df se ve así:

ID de la estación Contaminantes 8809 {"a": "46", "b": "3", " ;c": "12"} 8810 {"a": "36", "b": "5", "c": "8"} 8811 {"b": " 2", "c": "7"} 8812 {"c": "11"} 8813 {"a": "82", "c": "15"} 

Necesito dividir esta columna en columnas separadas, para que el DataFrame `df2 se vea así:

ID de estación abc 8809 46 3 12 8810 36 5 8 8811 NaN 2 7 8812 NaN NaN 11 8813 82 NaN 15 

El principal problema que tengo es que las listas no tienen la misma longitud. Pero todas las listas solo contienen hasta a los mismos 3 valores: "a", "b" y "c". Y siempre aparecen en el mismo orden ("a" primero, "b" segundo, "c" tercero).

El siguiente código USADO para trabajar y devolver exactamente lo que quería (df2).

objs = [df, pandas.DataFrame(df["Niveles de contaminantes"].tolist()).iloc[:, :3]] df2 = pandas.concat(objs, axis=1 ).drop("Niveles de contaminantes", axis=1) print(df2) 

Estaba ejecutando este código la semana pasada y funcionaba bien. Pero ahora mi código no funciona y aparece este error en la línea [4]:

IndexError: out-of-bounds on slice (end) 

No hice cambios en el código, pero ahora recibo el error. Siento que esto se debe a que mi método no es sólido o adecuado.

¡Cualquier sugerencia u orientación sobre cómo dividir esta columna de listas en columnas separadas sería muy apreciada!

EDITAR: Creo que los métodos .tolist() y .apply no funcionan en mi código porque es una cadena Unicode, es decir:

#My data format u{" a": "1", "b": "2", "c": "3"} #y no {u"a": "1", u"b": "2", u"c": "3"} 

Los datos se importan de la base de datos postgreSQL en este formato. ¿Alguna ayuda o idea con este problema? ¿Hay alguna forma de convertir Unicode?