Diviser / Exploser une colonne de dictionnaires en colonnes séparées avec des pandas

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

J'ai des données enregistrées dans une base de données postgreSQL. J'interroge ces données en utilisant Python2.7 et je les transforme en un Pandas DataFrame. Cependant, la dernière colonne de cette trame de données contient un dictionnaire de valeurs. Le DataFrame df ressemble à ceci :

Station ID Pollutants 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"} 

Je dois diviser cette colonne en colonnes séparées, de sorte que le DataFrame `df2 ressemble à ceci :

Station ID abc 8809 46 3 12 8810 36 5 8 8811 NaN 2 7 8812 NaN NaN 11 8813 82 NaN 15 

Le problème majeur que j'ai est que les listes ne sont pas de la même longueur. Mais toutes les listes ne contiennent que jusqu'à aux 3 mêmes valeurs : "a", "b" et "c". Et elles apparaissent toujours dans le même ordre ("a" en premier, "b" en second, "c" en troisième).

Le code suivant UTILISÉ pour fonctionner et retourner exactement ce que je voulais (df2).

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

J'exécutais ce code la semaine dernière et il fonctionnait bien. Mais maintenant mon code est cassé et j'obtiens cette erreur à partir de la ligne [4] :

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

Je n'ai apporté aucune modification au code, mais j'obtiens maintenant l'erreur. Je pense que cela est dû au fait que ma méthode n'est pas robuste ou appropriée.

Toutes suggestions ou conseils sur la façon de diviser cette colonne de listes en colonnes séparées seraient très appréciés !

EDIT : Je pense que les méthodes .tolist() et .apply ne fonctionnent pas sur mon code car il s'agit d'une chaîne Unicode, c'est-à-dire :

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

Les données sont importées de la base de données postgreSQL dans ce format. Une aide ou des idées avec ce problème? existe-t-il un moyen de convertir l'Unicode ?