У меня есть данные, сохраненные в базе данных postgreSQL
. Я запрашиваю эти данные с помощью Python2.7 и превращаю их в Pandas DataFrame. Однако в последнем столбце этого фрейма данных есть словарь значений. DataFrame df
выглядит следующим образом:
Идентификатор станции Pollutants 8809 {"a": "46", "b": "3", " ;c": "12"} 8810 {"a": "36", "b": "5", "c": "8"} 8811 {"b": 2", "с": "7"} 8812 {"с": "11"} 8813 {"а": "82", "с": "15"}
Мне нужно разбить этот столбец на отдельные столбцы, чтобы DataFrame `df2 выглядел так:
Идентификатор станции abc 8809 46 3 12 8810 36 5 8 8811 NaN 2 7 8812 NaN NaN 11 8813 82 NaN 15
Основная проблема заключается в том, что списки имеют разную длину. Но все списки содержат только вверх одним и тем же трем значениям: "a", "b" и "c". И они всегда появляются в одном и том же порядке ("a" во-первых, "b" во-вторых, "c" в-третьих). p>
Следующий код ИСПОЛЬЗУЕТСЯ для работы и возвращает именно то, что я хотел (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)
Я не внес никаких изменений в код, но теперь получаю сообщение об ошибке. Я чувствую, что это связано с тем, что мой метод не является надежным или правильным.
Любые предложения или рекомендации о том, как разделить этот столбец списков на отдельные столбцы, будут очень оценены!
EDIT: Я думаю, что методы .tolist()
и .apply не работают с моим кодом, потому что это одна строка Unicode, т.е.:
#My data format u{" a": "1", "b": "2", "c": "3"} #а не {u"a": "1", u"b": "2", u"c": "3"}
Данные импортируются из базы данных postgreSQL
в этом формате. Любая помощь или идеи с этой проблемой? есть ли способ преобразовать Unicode?