【发布时间】: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