簡體   English   中英

如何將帶有字典列表的str導入到熊貓數據框中?

[英]How can I import a str with a list of dicts into a pandas dataframe?

如何將包含數據的字符串從json轉換為數據框?

s = "[{u'website': u'', u'volume': u'0', u'price': u'0.00000510', u'id': u'', u'name': u''}, {u'website': u'', u'volume': u'0.00032510', u'price': u'0.0000000000000000', u'id': u' abcd', u'name': u' ABCD'}, {u'website': u'', u'volume': u'0', u'price': u'0.00000003', u'id': u' ktae', u'name': u' KTAE'}]"

我已經使用網站API提取了此信息,將json響應轉換為str並將其存儲到sql數據庫中。

現在,我已經從數據庫中獲取了這個字符串,並且我想用它創建一個數據框。

我怎樣才能做到這一點?

我已經嘗試過此代碼,但是沒有成功:

jdata = json.load(s)
df = pd.DataFrame.from_records(jdata)

上面的代碼產生了具有[384806 rows x 1 columns]的df

然后我試圖再次使用索引...卻沒有成功:

columns = ['website', 'volume_btc', 'price_btc', 'id', 'name']
df = pd.DataFrame.from_records(jdata, index=columns)

錯誤信息:

ValueError: Shape of passed values is (1, 384806), indices imply (1, 5)

如何使用列表推導將此信息從str轉換為dict格式並將其導入到pandas數據框中?

也許是這樣的...

dict_data = [ dict(y.split(':') for y in x.split(',')) for x in data2.split('}, {')]

我已經在此答案中找到了它,但我不知道如何有效地使用它。Any1有一個線索嗎?

我猜您的字符串s不是常規的JSON字符串。 但是您可以嘗試使用eval將其評估為python對象,字典列表,然后讓pandas處理:

In [12]: s = eval(s)

In [13]: pd.DataFrame(s)
Out[13]: 
      id   name               price      volume website
0                        0.00000510           0        
1   abcd   ABCD  0.0000000000000000  0.00032510        
2   ktae   KTAE          0.00000003           0        

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM