【问题标题】:Python pandas dataframe read from_records, "AssertionError: 1 columns passed, passed data had 22 columns"Python pandas 数据框从_records 读取,“AssertionError:1 列通过,传递的数据有 22 列”
【发布时间】:2014-07-31 11:03:42
【问题描述】:

我有一个列表,其中a 的长度是806。我想导入到列表中的第一项是列名的数据框。我的代码是:

import pandas as pd
b = pd.DataFrame.from_records(a[1:],columns=[a[0]])

这给了我AssertionError: 1 columns passed, passed data had 22 columns 的错误,而显然我只有一列。

我已经尝试了代码的表示,它可以工作。所以我不确定这里发生了什么。这是代码的表示:

import pandas as pd
arr= ['title', 'a','b','','','']
arr= filter(None, arr)
b = pd.DataFrame.from_records(arr[1:],columns=[arr[0]] )

我的清单一定有问题吗?我打印了a,它看起来不错,就像一个常规列表。我粘贴了a 的打印输出并将其作为变量list,它给了我同样的错误AssertionError: 1 columns passed, passed data had 22 columns。我的清单似乎有问题。我还能做些什么来调试?

编辑(基于 DSM 建议):

import pandas as pd
arr=['Title', '000660.ks']
b = pd.DataFrame.from_records(arr[1:],columns=[arr[0]] )

这给了AssertionError: 1 columns passed, passed data had 8 columns

【问题讨论】:

  • 与其告诉我们问题所在,不如将其展示给我们:编辑您的问题以提供我们可以复制和粘贴的示例。首先,找到最小的失败案例。 a[1:400] 仍然失败吗?对于a[1:100]a[1:5]?请注意,如果您在列表中有无法向我们展示的数据,则将字符串替换为“A”并将浮点数替换为 1.0 等,直到您想出一个您可以发布的示例。
  • 很好的建议。我已经尝试了您的建议,并将重新发布代码。
  • 首先,不要使用list作为变量名,假设你的数组命名为arr,试试pd.DataFrame([arr[1:]],columns=[arr[0]])
  • @mtadd。谢谢你的建议。进行了修改。

标签: python list pandas dataframe


【解决方案1】:

您想使用默认的 DataFrame 构造函数,而不是使用 from_records

from_records 需要一个可迭代的列表,例如,字符串'0006660.ks' 被读入为('0','0',... ,'s'),这就是为什么您会在数据中收到关于 8 列的错误。

b = pd.DataFrame(a[1:], columns=[a[0]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多