我有一个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
答案 0 :(得分:3)
您希望使用默认的DataFrame构造函数,而不是使用from_records
。
from_records
需要一个可迭代的列表,所以例如,字符串'0006660.ks'
被读入为('0','0',... ,'s')
,这就是为什么你在数据中收到8列错误的原因
b = pd.DataFrame(a[1:], columns=[a[0]])