Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字典列表转换为dataframe,其中一列用于键,一列用于值_Python_List_Pandas_Dataframe - Fatal编程技术网

Python 将字典列表转换为dataframe,其中一列用于键,一列用于值

Python 将字典列表转换为dataframe,其中一列用于键,一列用于值,python,list,pandas,dataframe,Python,List,Pandas,Dataframe,假设我有以下列表: list1=[{'a':1},{'b':2},{'c':3}] 我想把它转换成一个熊猫数据框,它有两列:一列是键,一列是值 keys values 0 'a' 1 1 'b' 2 2 'c' 3 为此,我尝试使用pd.DataFrame(list1)和pd.DataFrame.from_records(list1),但在这两种情况下,我都得到了如下数据帧: a b c 0 1.0 NaN

假设我有以下列表:

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

我想把它转换成一个熊猫数据框,它有两列:一列是键,一列是值

    keys    values
0    'a'      1
1    'b'      2
2    'c'      3
为此,我尝试使用
pd.DataFrame(list1)
pd.DataFrame.from_records(list1)
,但在这两种情况下,我都得到了如下数据帧:

     a    b    c
0  1.0  NaN  NaN
1  NaN  2.0  NaN
2  NaN  NaN  3.0

有没有办法具体说明我想要什么?通过研究,我只能找到上面描述的方法。

使用
列表理解
对元组列表进行展平:

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
详细信息

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

[('a', 1), ('b', 2), ('c', 3)]

如果字典中的键是唯一的,则可以创建单个字典并将其馈送到。这可以通过以下方式实现:

或者,您可以通过列表直接向
pd.DataFrame
构造函数提供:

df = pd.DataFrame(list(ChainMap(*list1).items()))

虽然@jezrael完美地回答了我的问题,但我想指出,如果您将每个字典(
{'a':1}
)转换为一个列表(
['a',1]
),您只需使用
pd.DataFrame(list1)
,即可获得所需的结果

df = pd.DataFrame(list(ChainMap(*list1).items()))