Python pandas dataframe读取from_records,“AssertionError:传递1列,传递的数据有22列”

时间:2014-06-10 15:36:55

标签: python list pandas dataframe

我有一个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

1 个答案:

答案 0 :(得分:3)

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

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

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