将字典列表存储为数据帧

2024-09-28 19:29:16 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个字典列表

 l = [{'car':'good'},
      {'mileage':'high'},
      {'interior':'stylish'},
      {'car':'bad'},
      {'engine':'powerful'},
      {'safety':'low'}]

基本上这些是名词-形容词对

  1. 我怎样才能想象出形容词的最相关列表是什么 让我们说汽车在这里
  2. 如何将其转换为数据帧,我试过pd.Dataframe(l) ,但这里的键不是列名,所以有点棘手 在这里

任何帮助都将不胜感激

Sample output


Tags: 列表字典carenginelowbadgoodhigh
2条回答

您可以通过提供元组列表来构造数据帧。要从dict获取元组,请使用items()方法。通过获取每个项目的第一个元组,构造具有列表理解的元组列表

import pandas as pd
df=pd.DataFrame(data=[d.items()[0] for d in l],columns=['A','B'])
print df

给出:

          A         B
0       car      good
1   mileage      high
2  interior   stylish
3       car       bad
4    engine  powerful
5    safety       low

如果您希望按列执行此操作,则必须重新构造字典列表。您需要有一个字典来表示一行。因此,您的示例列表应该是(为了更好地解释,我添加了第二行):

 l = [
     {'car':'good','mileage':'high','interior':'stylish','car':'bad','engine':'powerful','safety':'low'}, # row 1
     {'car':'bad','mileage':'low','interior':'old','car':'bad','engine':'powerful','safety':'low'} # row 2
 ]

此时,您所要做的就是调用pd.DataFrame(l)

编辑:根据您的评论,我认为您需要将字典转换为列表以获得所需的结果。这里有一个快速的方法(我相信它会更有效率):

l = [{'car':'good'},
      {'mileage':'high'},
      {'interior':'stylish'},
      {'car':'bad'},
      {'engine':'powerful'},
      {'safety':'low'}]

new_list = []
for item in l:
    for key, value in item.items():
        temp = [key,value]
        new_list.append(temp)

df = pd.DataFrame(new_list, columns=['Noun', 'Adjective'])

相关问题 更多 >