来自嵌套字典数组的熊猫数据框

时间:2021-04-17 19:25:52

标签: python pandas dictionary

import pandas as pd
input_thing = [
    [{'foo': 1, 'bar': 'a', }], 
    [{'foo': 2, 'bar': 'b', }],
]
print(input_thing)

我怎样才能从上面显示的数据中得到一个不错的 Pandas 数据框? IE。 foobar 列很好地显示在外面

 pd.DataFrame(input_thing)

只会生成一个单列 0 的数据框

所需的输出是:

pd.concat([
    pd.DataFrame(input_thing[0]),
    pd.DataFrame(input_thing[1])
])

2 个答案:

答案 0 :(得分:2)

如果 input_thing 中的每个子列表都有一个元素:

df = pd.DataFrame([i[0] for i in input_thing])
print(df)

打印:

   foo bar
0    1   a
1    2   b

编辑:

df = pd.DataFrame(input_thing)
print(df[0].apply(pd.Series))

打印:

   foo bar
0    1   a
1    2   b

答案 1 :(得分:0)

只需将您的 pd.concat 替换为 for 循环:

import pandas as pd
input_thing = [
[{'foo': 1, 'bar': 'a', }], 
[{'foo': 2, 'bar': 'b', }],
]
df = pd.DataFrame([i[0] for i in input_thing])
print(df)

然后它就会得到你想要的:

    foo bar
0    1   a
1    2   b

这就是你想要的。