2017-09-02 140 views
-2

如果我有字典對象的列表,我可以做這樣的事情創建我的數據框:JSON數據轉換爲大熊貓數據幀

my_dict_list = [dict1, dict2, dict3, ...] 

cols = ['columnA', 'columnB', 'columnC'] # I choose which keys I want to keep 

df = pd.DataFrame(my_dict_list, columns=cols) 

它就像一個魅力。

但在我的情況下,對於某些特定的鍵,字典值包含一些其他字符,並且我想保留這些鍵的一些來創建我的列數據框。

我一直在試圖找到解決辦法,但我失敗了

下面是摘錄:

enter image description here

我的列表的第3項:https://wetransfer.com/downloads/8ba8d89ec70def6f46e8d6ca01ef553420170902233517/44ad5f

+0

你的問題是什麼? –

+0

你的字典結構如何?請提供一些樣品。 –

+0

@ScottBoston這是一個推文列表。列表中的每個條目都是一個包含「時間」,「文本」,「位置」等鍵的詞典。但名爲「用戶」的鍵是一個鍵詞列表的名詞,如「name」,「screen_name」,「位置「等。 –

回答

2

使用pd.io.json.json_normalize並稍加預處理:

import pandas as pd 

cols = ['created_at', 'text', 'user'] 
user_cols = ['name', 'screen_name'] 

data2 = [{k : x[k] for k in cols} for x in data]  
for d in data2: 
    d['user'] = {k : d['user'][k] for k in user_cols} 

out = pd.io.json.json_normalize(data2)\ 
      .rename(columns=lambda x: x.replace(r'user.', '')) 
print(out) 

         created_at \ 
0 Sat Sep 02 07:10:33 +0000 2017 
1 Fri Sep 01 19:58:18 +0000 2017 
2 Fri Sep 01 18:53:27 +0000 2017 

               text   name \ 
0 @SitePenalise On pourrait rajouter Les EMD son... Régis Stéphant 
1 Possible de recevoir la dernière version à jou... Pierrick Butty 
2 Les sites placés en page 1 sur mots clés à for... Site Pénalisé 

    screen_name 
0  Ledzep_56 
1 pierrickbutty 
2 SitePenalise