0

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

那么这里发生了什么?

4

1 回答 1

0

文档

一个数据框是

二维大小可变、潜在异构的表格数据结构

因此,您要么需要传递一个具有显式列名的二维数组,要么传递一个字典,如下所示

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

于 2019-11-02T16:43:43.913 回答