Dividir / Explodir uma coluna de dicionários em colunas separadas com pandas

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

Tenho dados salvos em um banco de dados postgreSQL. Estou consultando esses dados usando Python2.7 e transformando-o em um Pandas DataFrame. No entanto, a última coluna deste dataframe possui um dicionário de valores dentro dela. O DataFrame df se parece com isto:

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

Preciso dividir esta coluna em colunas separadas, para que o DataFrame `df2 fique assim:

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

O maior problema que estou tendo é que as listas não têm o mesmo tamanho. Mas todas as listas contêm apenas até para os mesmos três valores: "a", "b" e "c". E eles sempre aparecem na mesma ordem ("a" primeiro, "b" segundo, "c" terceiro). p>

O código a seguir USADO para funcionar e retornar exatamente o que eu queria (df2).

objs = [df, pandas.DataFrame(df["Níveis de Poluente"].tolist()).iloc[:, :3]] df2 = pandas.concat(objs, axis=1 ).drop("Níveis de poluentes", axis=1) print(df2) 

Eu estava executando este código na semana passada e estava funcionando bem. Mas agora meu código está quebrado e recebo este erro da linha [4]:

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

Não fiz nenhuma alteração no código, mas agora estou recebendo o erro. Acho que isso se deve ao fato de meu método não ser robusto ou adequado.

Qualquer sugestão ou orientação sobre como dividir esta coluna de listas em colunas separadas seria muito apreciada!

EDIT: Acho que os métodos .tolist() e .apply não estão funcionando no meu código porque é uma string Unicode, ou seja:

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

Os dados são importados do banco de dados postgreSQL neste formato. Alguma ajuda ou ideias com este problema? existe uma maneira de converter o Unicode?