将 dict 的 dict 列表转换为 DataFrame [英] Convert list of dicts of dict into DataFrame

查看:82
本文介绍了将 dict 的 dict 列表转换为 DataFrame的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个字典的字典列表,如下所示:

I have a list of dictionaries of dictionary looks like:

[{'a': 1, 'b': {'c': 1, 'd': 2, 'e': 3}, 'f': 4}, 
 {'a': 2, 'b': {'c': 2, 'd': 3, 'e': 4}, 'f': 3}, 
 {'a': 3, 'b': {'c': 3, 'd': 4, 'e': 5}, 'f': 2}, 
 {'a': 4, 'b': {'c': 4, 'd': 5, 'e': 6}, 'f': 1 }]

结果应该是这样的:

     a    c    d    e    f
0    1    1    2    3    4
1    2    2    3    4    3
2    3    3    4    5    2
3    4    4    5    6    1

而默认的 pd.DataFrame(data) 看起来像:

while the default pd.DataFrame(data) looks like:

     a    b                           f
0    1    {'c': 1, 'd': 2, 'e': 3}    4
1    2    {'c': 2, 'd': 3, 'e': 4}    3
2    3    {'c': 3, 'd': 4, 'e': 5}    2
3    4    {'c': 4, 'd': 5, 'e': 6}    1

我怎样才能用熊猫做到这一点?谢谢.

How can I do this with pandas? Thanks.

推荐答案

json_normalize 正是您要找的!

import pandas as pd
from pandas.io.json import json_normalize

x = [{'a': 1, 'b': {'c': 1, 'd': 2, 'e': 3}, 'f': 4}, 
 {'a': 2, 'b': {'c': 2, 'd': 3, 'e': 4}, 'f': 3}, 
 {'a': 3, 'b': {'c': 3, 'd': 4, 'e': 5}, 'f': 2}, 
 {'a': 4, 'b': {'c': 4, 'd': 5, 'e': 6}, 'f': 1 }]

sep = '::::' # string that doesn't appear in column names

frame = json_normalize(x, sep=sep)
frame.columns = frame.columns.str.split(sep).str[-1]
print(frame)

输出

   a  c  d  e  f
0  1  1  2  3  4
1  2  2  3  4  3
2  3  3  4  5  2
3  4  4  5  6  1

这篇关于将 dict 的 dict 列表转换为 DataFrame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆