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()))