【问题标题】:AttributeError: 'list' object has no attribute 'keys' when attempting to create DataFrame from list of dictsAttributeError: 'list' 对象在尝试从 dicts 列表创建 DataFrame 时没有属性 'keys'
【发布时间】:2016-04-22 05:59:53
【问题描述】:

非常感谢您的帮助,

我有一个需要放入数据框中的字典列表。我知道 pandas 中的正常方法是

final_df=pd.DataFrame.from_records(Mixed_and_Poured[0], index='year')

其中 Mixed_and_poured 是一个列表,其中包含另一个实际保存字典的列表

print Mixed_and_Poured
[[{'Country': 'Brazil', u'Internet users': '2.9', 'Year': '2000'}, {'Country': 'Brazil', u'Internet users': '21', 'Year': '2005'}, {'Country': 'Brazil', u'Internet users': '40.7', 'Year': '2010'}, {'Country': 'Brazil', u'Internet users': '45', 'Year': '2011'}, 

我可以发誓

final_df=pd.DataFrame.from_records(Mixed_and_Poured[0], index='year')

刚刚工作!但是当我今天运行它时,它会抛出

AttributeError: 'list' object has no attribute 'keys'

为什么现在要在这个列表中寻找键?

【问题讨论】:

  • 我正在倾注this related question put 无法弄清楚我的解决方案有什么问题
  • 你需要另一个[0]吗?显然它需要一本字典。
  • 使用 pandas 0.16.2 和 Python 3.4,我得到了一个很好的数据框 if 我将 index 更正为 'Year'(注意大写)并删除了尾随逗号来自Mixed_and_Poured 并添加两个右括号]]

标签: python list dictionary pandas dataframe


【解决方案1】:

事实证明,我实际上并没有对仅包含字典的列表进行操作,而是在最后隐藏了一个小混蛋列表。

对不起!

【讨论】:

    【解决方案2】:

    我不能用给定的数据重现你的错误,我得到一个 KeyError。

    但为什么还要使用 from_records?

    pd.DataFrame(Mixed_and_Poured[0]).set_index('Year')
    

    输出:

         Country Internet users
    Year                       
    2000  Brazil            2.9
    2005  Brazil             21
    2010  Brazil           40.7
    2011  Brazil             45
    

    【讨论】:

    • 我得到 AttributeError: 'list' object has no attribute 'keys',我的数据有点长,我应该发布整个内容吗?我使用 from_records 是因为我发布的链接中的答案推荐了它
    • 万一有人感兴趣,我发现我的数据结构都是错误的。让我修复并发布我得到的东西
    • 想通了,我准备好了!在我的字典列表的最后有一个嵌套列表:b
    【解决方案3】:

    当列表中的几个项目不可用(无)时,我也遇到了这个问题。名单很大,所以我一开始没有注意到。我使用的最简单的快速修复方法是创建一个新列表,其中仅包含 None 项:

    list1 = [2,3,4, None, 2]
    list1 = [item for item in list1 if item != None]
    list1
    [2, 3, 4, 2]
    

    【讨论】:

    • 哈,好久没看这个了!唯一的问题我看到有一个模糊的尝试除了,这是一个反模式。考虑捕获一个特定的异常,例如AttributeError,否则您可能会不小心抑制代码中的严重缺陷,以后很难找到。 stackoverflow.com/questions/14797375/…
    • 你是对的,try-excepts 应该更具体。另一种方法是检查对象是否为 None。
    猜你喜欢
    • 1970-01-01
    • 2021-07-26
    • 2021-08-09
    • 1970-01-01
    • 2013-10-23
    • 2022-08-19
    • 1970-01-01
    • 2021-11-08
    • 2017-01-24
    相关资源
    最近更新 更多