如果我有一个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,我想保留这些键的一些键来创建我的列数据帧。
我一直试图找到解决方案,但我失败了
以下是摘录:
我的列表中的3个第一个条目:https://wetransfer.com/downloads/8ba8d89ec70def6f46e8d6ca01ef553420170902233517/44ad5f
答案 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