2016-06-08 33 views
-1

假設我有一個JSON文件,如下所示,閱讀Python中的JSON和將其轉換成數據幀

{u'level': u'INFO', 
u'message': {"method":"someMethod","params":{"frameId":"9.6","loaderId":"3.2","requestId":"4.6"}} 
u'timestamp': 654789L} 

爲了解析到這個數據幀,第一個層次,我能夠做data[1]['level']data[1]['message']data[1]['timestamp'] 。但我想更深入地瞭解這條消息,我正在嘗試,data[1]['message']['method']data[1]['message']['params']這是拋出我的錯誤。

TypeError: string indices must be integers 

第一級別和第二級別之間的引號有所不同,第一級別具有單引號,第二級別具有雙引號。任何人都可以告訴我如何達到這裏的方法或params參數?也是將所有內容解析爲數據框的最佳方式?

感謝

+0

嘗試運行'data [1] .keys()'和'data [1] ['message']。keys()'。 – shane

+0

data [1] .keys()給出[u'timestamp',u'message',u'level']但數據[1] ['message']。keys給出AttributeError:'unicode'對象沒有屬性'鍵' – haimen

+0

您的第一個示例不是JSON,而是Python字典轉換爲字符串。這也是錯誤的,因爲在第二行的兩個}之後你錯過了一個逗號。您還應該包含一個完整的(工作)代碼示例,說明您正在嘗試執行的操作,因爲您所說的錯誤與您的數據不匹配。 – hdiogenes

回答

0

您可以使用此pandas.read_json會自動文件讀入到一個數據幀。

import pandas as pd 

data = pd.read_json('test.json') 

但您在問題中顯示的數據不是有效的JSON格式。有關正確的格式,請參閱此example。要檢查您的文件是否採用有效的JSON格式,您也可以使用此validator。數據的有效JSON格式如下所示:

[{ 
    "level": "INFO", 
    "message": [{ 
     "method": "someMethod", 
     "params": [{ 
      "frameId": "9.6", 
      "loaderId": "3.2", 
      "requestId": "4.6" 
     }] 
    }], 
    "timestamp": "654789 L" 
}]