将字典列表转换为数据框,其中一列用于键,一列用于值

Mar*_*isa 3 python list dataframe pandas

假设我有以下列表:

list1 = [{'a': 1}, {'b': 2}, {'c': 3}]

我想将其转换为具有两列的熊猫数据框:一列用于键,一列用于值。

    keys    values
0    'a'      1
1    'b'      2
2    'c'      3
Run Code Online (Sandbox Code Playgroud)

为此,我尝试使用pd.DataFrame(list1)and pd.DataFrame.from_records(list1),但是,在这两种情况下,我都得到了一个数据框,如:

     a    b    c
0  1.0  NaN  NaN
1  NaN  2.0  NaN
2  NaN  NaN  3.0
Run Code Online (Sandbox Code Playgroud)

有什么方法可以指定我想要什么?通过研究,我只能找到我上面描述的方式。

jez*_*ael 6

使用list comprehension与扁平化的元组的列表:

df = pd.DataFrame([(i, j) for a in list1 for i, j in a.items()], 
                   columns=['keys','values'])
print (df)
  keys  values
0    a       1
1    b       2
2    c       3
Run Code Online (Sandbox Code Playgroud)

详情

print ([(i, j) for a in list1 for i, j in a.items()])

[('a', 1), ('b', 2), ('c', 3)]
Run Code Online (Sandbox Code Playgroud)