开发者社区> 问答> 正文

在dataframe中循环字典列表和将项添加到列中的有效方法

这是绝笔:

data = [
    {'1':20},
    {'1':10},
    {'1':40},
    {'1':14},
    {'1':33}
]

我要做的是循环遍历每个字典并将每个值附加到dataframe中的一个列。 现在我正在做

import pandas as pd
lst = []
for item in data:
    lst.append(item['1'])

df = pd.DataFrame({"col1":lst})

输出:

    col1
0   20
1   10
2   40
3   14
4   33

是的,这是我想要的,但是我有超过100万的字典在列表中。这是最有效的方法吗? 编辑: pd.DataFrame(数据).rename(列= {' 1 ':' col1 '}) 完美的工作上述情况,但如果数据看起来像这样呢?

data = [
    {'1':
     {'value':20}},
    {'1':
     {'value':10}},
    {'1':
      {'value':40}},
    {'1':
      {'value':14}},
    {'1':
      {'value':33}}]

所以我会用:

lst = []
for item in data:
    lst.append(item['1']['value'])

df = pd.DataFrame({"col1":lst})

对于包含字典的字典列表是否有更有效的方法? 问题来源StackOverflow 地址:/questions/59386344/efficient-way-of-looping-through-list-of-dictionaries-and-appending-items-into-c

展开
收起
kun坤 2019-12-25 22:01:10 767 0
1 条回答
写回答
取消 提交回答
  • 一种方法是将数据传递给DataFrame cosntructor,然后使用rename:

    df = pd.DataFrame(data).rename(columns={'1':'col1'})
    print (df)
       col1
    0    20
    1    10
    2    40
    3    14
    4    33
    

    如果有必要过滤使用列表理解和添加参数列:

    df = pd.DataFrame([x['1'] for x in data], columns=['col1'])
    print (df)
       col1
    0    20
    1    10
    2    40
    3    14
    4    33
    

    编辑:用于新的数据使用:

    data = [
        {'1':
         {'value':20}},
        {'1':
         {'value':10}},
        {'1':
          {'value':40}},
        {'1':
          {'value':14}},
        {'1':
          {'value':33}}]
    
    df = pd.DataFrame([x['1']['value'] for x in data], columns=['col1'])
    print (df)
       col1
    0    20
    1    10
    2    40
    3    14
    4    33
    

    或者:

    df = pd.DataFrame([x['1'] for x in data]).rename(columns={'value':'col1'})
    print (df)
       col1
    0    20
    1    10
    2    40
    3    14
    4    33
    
    2019-12-25 22:01:17
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载