Podziel / Rozbij kolumnę słowników na osobne kolumny z pandami

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

Mam dane zapisane w bazie danych postgreSQL. Pytam o te dane za pomocą Python2.7 i przekształcam je w Pandas DataFrame. Jednak ostatnia kolumna tej ramki danych zawiera w sobie słownik wartości. DataFrame df wygląda tak:

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

Muszę podzielić tę kolumnę na osobne kolumny, aby DataFrame `df2 wyglądała tak:

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

Głównym problemem, jaki mam, jest to, że listy nie mają tej samej długości. Ale wszystkie listy zawierają tylko do tych samych trzech wartości: „a”, „b” i „c”. I zawsze pojawiają się w tej samej kolejności (pierwsze „a”, drugie „b”, trzecie „c”).

Poniższy kod UŻYWAŁ do pracy i zwracał dokładnie to, czego chciałem (df2).

objs = [df, pandas.DataFrame(df["Poziomy zanieczyszczeń"].tolist()).iloc[:, :3]] df2 = pandas.concat(objs, axis=1 ).drop("Poziomy zanieczyszczeń", oś=1) print(df2) 

Uruchomiłem ten kod w zeszłym tygodniu i działał dobrze. Ale teraz mój kod jest uszkodzony i otrzymuję ten błąd z wiersza [4]:

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

Nie wprowadziłem żadnych zmian w kodzie, ale teraz otrzymuję błąd. Czuję, że wynika to z tego, że moja metoda nie jest solidna lub niewłaściwa.

Wszelkie sugestie lub wskazówki dotyczące tego, jak podzielić tę kolumnę list na osobne kolumny, byłyby bardzo mile widziane!

EDYTUJ: Myślę, że metody .tolist() i .apply nie działają w moim kodzie, ponieważ jest to jeden ciąg znaków Unicode, tj.:

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

Dane są importowane z bazy danych postgreSQL w tym formacie. Jakaś pomoc lub pomysły z tym problemem? czy istnieje sposób na konwersję Unicode?