我在這裏有一個棘手的問題,關於將JSON字符串轉換爲Python數據字典用於分析Pandas。我已閱讀了其他一些問題,但沒有一個對我的案例起作用。將JSON轉換爲Python Dict與SQLAlchemy導入的Postgresql數據
以前,我只是簡單地使用CSV(和Pandas的read_csv函數)來執行我的分析,但現在我已經開始直接從PostgreSQL中提取數據。
我沒有問題,使用SQLAlchemy連接到我的引擎並運行我的查詢。我的整個腳本與我從CSV中獲取數據時的運行方式相同。也就是說,直到它轉到我試圖將其中一列(即下面的示例文本中的'config'列)從JSON轉換爲Python字典的部分。將其轉換爲字典的最終目標是能夠計算「config」列中「選項」字段下的響應數量。
df = pd.read_sql_query('SELECT questions.id, config from questions ', engine)
df = df['config'].apply(json.loads)
df = pd.DataFrame(df.tolist())
df['num_options'] = np.array([len(row) for row in df.options])
當我運行這個,我得到錯誤「TypeError:預期的字符串或緩衝區」。我嘗試將'config'列中的數據轉換爲來自對象的字符串,但這並沒有做到這一點(我得到了另一個錯誤,例如「ValueError:Expecting property name ...」)。
如果有幫助,這裏有一個在「配置」柱剪斷數據從一個細胞(代碼應返回的結果「6」這個剪斷,因爲有6個選項):
{"graph_by":"series","options":["Strongbow Case Card/Price Card","Strongbow Case Stacker","Strongbow Pole Topper","Strongbow Base wrap","Other Strongbow POS","None"]}
我猜測是SQLAlchemy在將數據從數據庫中提取出來時會對JSON字符串做些奇怪的事情?當我只是從數據庫中提取CSV時不會發生什麼?
對不起,我在回覆您的延遲,但這種完美工作,非常感謝分享! –