我正在从文本文件构建清除数据的数据框。我的预期数据框为11列和2行(目前)。
TestRow1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
columns_headers = [A, B, C, D, E, F, G, H, I, J, K]
我认为这会起作用:
new_df = pd.DataFrame(data =TestRow1, headers = columns_headers)
不是。相反,您会得到一个索引错误:
error ValueError: Shape of passed values is (11, 1), indices imply (11, 11)
但是,当我通过此操作时:
NewDF = pd.DataFrame(data = [TestRow1], columns = columns_headers)
它确实起作用。但为什么?如果检查“ TestRow1”和“ [TestRow1]”的类型,则会发现它们都是:
<class 'list'>
那么这是怎么回事?
答案 0 :(得分:0)
DataFrame是
二维尺寸可变的,可能异构的表格数据结构
因此,您要么需要传递带有显式列名的2D数组,要么传递如下所示的字典
pd.DataFrame({'column_name': [1,2,3]})
第一种情况:
new_df = pd.DataFrame(data =TestRow1, headers = columns_headers)
这是行不通的,因为没有命名参数headers
。
第二种情况:
NewDF = pd.DataFrame(data = [TestRow1], columns = columns_headers)
这将起作用,因为您已将数据转换为2D列表。 [[1,2,3]]
,并且您还为columns
提供了正确的参数名称。
PS:
您对list
上的数据是正确的。但是重点应该放在列表的形状上。