我有一个列表,其中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
最佳答案
您不想使用from_records
,而是要使用默认的DataFrame构造函数。from_records
需要一个可迭代的列表,例如,字符串'0006660.ks'
被读为('0','0',... ,'s')
,这就是为什么在数据中出现8列错误的原因。
b = pd.DataFrame(a[1:], columns=[a[0]])
关于python - Python pandas dataframe从from_records读取,“AssertionError:传递了1列,传递的数据有22列”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24145140/