将JSON数据转换为pandas DataFrame

时间:2017-09-02 22:49:36

标签: python json pandas dataframe

如果我有一个dict对象列表,我可以做这样的事情来创建我的数据帧:

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)

它就像一个魅力。

但在我的情况下,对于某些特定的键,dicts值包含一些其他的dicts,我想保留这些键的一些键来创建我的列数据帧。

我一直试图找到解决方案,但我失败了

以下是摘录:

enter image description here

我的列表中的3个第一个条目:https://wetransfer.com/downloads/8ba8d89ec70def6f46e8d6ca01ef553420170902233517/44ad5f

1 个答案:

答案 0 :(得分: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