辞書の列をパンダで別々の列に分割/分解します

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

postgreSQLデータベースにデータを保存しています。 Python2.7を使用してこのデータをクエリし、PandasDataFrameに変換しています。ただし、このデータフレームの最後の列には、値のディクショナリが含まれています。 DataFrame df は次のようになります:

  Station ID Pollutants 8809 {" a&quot ;:" 46&quot ;," b&quot ;:" 3&quot ;," ; c&quot ;:" 12"} 8810 {" a&quot ;:" 36&quot ;," b&quot ;:" 5&quot ;," c&quot ;:" 8"} 8811 {" b&quot ;:" 2&quot ;," c&quot ;:" 7"} 8812 {" c&quot ;:" 11"} 8813 {" a&quot ;:" 82&quot ;," c&quot ;:" 15"}  

この列を別々の列に分割して、DataFrame`df2が次のようになるようにする必要があります。

ステーションIDabc8809 46 3 12 8810 36 5 8 8811 NaN 2 7 8812 NaN NaN 11 8813 82 NaN 15  

私が抱えている主な問題は、リストの長さが同じではないことです。しかし、すべてのリストには含まれているだけです。同じ3つの値:「a」、「b」、「c」。これらは常に同じ順序で表示されます(「a」が最初、「b」が2番目、「c」が3番目)。

次のコードは、私が望んでいたもの(df2)を正確に機能させて返すために使用されました。< / p>

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

先週このコードを実行していましたが、正常に機能していました。しかし今、私のコードは壊れており、[4]行目からこのエラーが発生します:

  IndexError:スライス(終了)の範囲外 

コードに変更を加えていませんが、エラーが発生しています。これは、私の方法が堅牢または適切ではないことが原因だと思います。

リストのこの列を個別の列に分割する方法に関する提案やガイダンスは、非常にありがたいです!

編集: .tolist()メソッドと.applyメソッドは、1つのUnicode文字列であるため、私のコードでは機能しないと思います。つまり、次のようになります。

  #My data format u {" a ":" 1 "、" b ":" 2 "、" c ":" 3 "}#ではなく{u" a ":" 1 "、u" b ":" 2 "、u" c ": "3"}  

データはpostgreSQLデータベースからこの形式でインポートされます。この問題に関するヘルプやアイデアはありますか? Unicodeを変換する方法はありますか?