Bir sözlük sütununu pandalarla ayrı sütunlara ayırın / patlatın

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

Bir postgreSQL veritabanında kayıtlı verilerim var. Bu verileri Python2.7 kullanarak sorguluyorum ve onu Pandas DataFrame'e dönüştürüyorum. Ancak, bu veri çerçevesinin son sütununun içinde bir değerler sözlüğü vardır. DataFrame df şöyle görünür:

İstasyon Kimliği Kirleticiler 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"} 

DataFrame `df2'nin şöyle görünmesi için bu sütunu ayrı sütunlara bölmem gerekiyor:

İstasyon Kimliği abc 8809 46 3 12 8810 36 5 8 8811 NaN 2 7 8812 NaN NaN 11 8813 82 NaN 15 

Karşılaştığım en önemli sorun, listelerin aynı uzunlukta olmamasıdır. Ancak tüm listeler yalnızca aynı 3 değere: "a", "b" ve "c". Ve her zaman aynı sırada görünürler ("önce a", "b" ikinci, "c" üçüncü). p>

Aşağıdaki kod çalışmak ve tam olarak istediğim şeyi döndürmek için KULLANILMIŞTIR (df2).

objs = [df, pandas.DataFrame(df["Kirletici Düzeyler"].tolist()).iloc[:, :3]] df2 = pandas.concat(objs, axis=1 ).drop("Kirletici Düzeyler", axis=1) print(df2) 

Bu kodu daha geçen hafta çalıştırıyordum ve gayet iyi çalışıyordu. Ama şimdi kodum bozuldu ve [4] satırından şu hatayı alıyorum:

IndexError: dilimde (sonda) sınırların dışında 

Kodda herhangi bir değişiklik yapmadım ama şimdi hatayı alıyorum. Bunun, yöntemimin sağlam veya uygun olmamasından kaynaklandığını düşünüyorum.

Bu liste sütununun ayrı sütunlara nasıl bölüneceğine dair herhangi bir öneri veya rehberlik çok takdir edilecektir!

DÜZENLE: Tek bir Unicode dizesi olduğu için .tolist() ve .apply yöntemlerinin kodumda çalışmadığını düşünüyorum, yani:

#Veri biçimim u{" a": "1", "b": "2", "c": "3"} #ve {u"a": "1", u"b": "2", u"c" değil: "3"} 

Veriler, postgreSQL veritabanından bu biçimde içe aktarılır. Bu sorunla ilgili herhangi bir yardım veya fikir? Unicode'u dönüştürmenin bir yolu var mı?