팬더를 사용하여 사전 열을 별도의 열로 분할 / 분해

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

postgreSQL 데이터베이스에 저장된 데이터가 있습니다. Python2.7을 사용하여 이 데이터를 쿼리하고 Pandas DataFrame으로 변환합니다. 그러나 이 데이터 프레임의 마지막 열에는 그 안에 값 사전이 있습니다. DataFrame df는 다음과 같습니다.

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

DataFrame `df2가 다음과 같이 보이도록 이 열을 별도의 열로 분할해야 합니다.

Station ID abc 8809 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"가 두 번째, "c"가 세 번째).

다음 코드는 내가 원하는 대로 작동하고 반환하는 데 사용되었습니다(df2).

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

지난주에 이 코드를 실행했는데 제대로 작동했습니다. 하지만 이제 내 코드가 손상되어 [4]줄에서 다음 오류가 발생합니다.

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

코드를 변경하지 않았지만 이제 오류가 발생합니다. 내 방법이 강력하지 않거나 적절하지 않기 때문이라고 생각합니다.

이 목록 열을 별도의 열로 분할하는 방법에 대한 제안이나 지침은 매우 감사하겠습니다!

편집: .tolist() 및 .apply 메서드가 하나의 유니코드 문자열이기 때문에 내 코드에서 작동하지 않는다고 생각합니다. 예:

#My data format u{" a": "1", "b": "2", "c": "3"} # {u"a": "1", u"b": "2", u"c"가 아님: "3"} 

이 형식으로 postgreSQL 데이터베이스에서 데이터를 가져옵니다. 이 문제에 대한 도움이나 아이디어가 있습니까? 유니코드를 변환하는 방법이 있습니까?