Dividi / Esplodi una colonna di dizionari in colonne separate con i panda

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

Ho dei dati salvati in un database postgreSQL. Sto interrogando questi dati usando Python2.7 e trasformandoli in un Pandas DataFrame. Tuttavia, l'ultima colonna di questo dataframe ha un dizionario di valori al suo interno. Il df di DataFrame ha il seguente aspetto:

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"} 

Ho bisogno di dividere questa colonna in colonne separate, in modo che il DataFrame `df2 assomigli a questo:

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

Il problema principale che sto riscontrando è che le liste non hanno la stessa lunghezza. Ma tutte le liste contengono solo fino agli stessi 3 valori: "a", "b" e "c". E appaiono sempre nello stesso ordine ("a" prima, "b" seconda, "c" terza).

Il seguente codice UTILIZZATO per funzionare e restituire esattamente ciò che volevo (df2).

objs = [df, pandas.DataFrame(df["Livelli inquinanti"].tolist()).iloc[:, :3]] df2 = pandas.concat(objs, axis=1 .drop("Pollutant Levels", axis=1) print(df2) 

Stavo eseguendo questo codice solo la scorsa settimana e funzionava bene. Ma ora il mio codice è rotto e ottengo questo errore dalla riga [4]:

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

Non ho apportato modifiche al codice ma ora ricevo l'errore. Ritengo che ciò sia dovuto al fatto che il mio metodo non è solido o adeguato.

Qualsiasi suggerimento o guida su come dividere questa colonna di elenchi in colonne separate sarebbe molto apprezzato!

EDIT: Penso che i metodi .tolist() e .apply non funzionino sul mio codice perché è una stringa Unicode, ovvero:

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

I dati vengono importati dal database postgreSQL in questo formato. Qualche aiuto o idee con questo problema? c'è un modo per convertire Unicode?