为什么熊猫不允许我使用列表添加行而不添加[]?

时间:2019-11-02 16:39:27

标签: pandas list

我正在从文本文件构建清除数据的数据框。我的预期数据框为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'>

那么这是怎么回事?

1 个答案:

答案 0 :(得分:0)

documentation

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上的数据是正确的。但是重点应该放在列表的形状上。