我正在尝试使用numpy数组创建一个pandas数据帧 . 数据,索引和列数组都是numpy'ndarrays'(分别是2D,1D和1D),并且为了这个例子,所有都是float64 .
import pandas as pd
import numpy as np
data = np.zeros((100, 15))
index = np.zeros((100, 1))
columns = np.zeros ((15, 1))
df1 = pd.DataFrame(data=data, index=index, columns=columns)
print(df1)
当我打印 df1
时,我收到此属性错误,我无法解决:
AttributeError:'numpy.ndarray'对象没有属性'endswith'
打印 print(df1.to_string())
时返回相同的错误,但如果我打印 print(df1.values)
, print(df1.index)
或 print(df1.columns)
,则返回预期的值 .
我在这里错过了什么吗?不可否认,我对使用Pandas很新,但我认为这个简单的例子可以正常工作 .
2 回答
TL; DR
细节
您将一个元组参数传递给
np.zeros
,结果为 array of arrays .你得到一个错误,因为i)每个元素都是一个数组,而ii)没有为数组定义
endswith
.index
和columns
都采用类似列表(包括array
)的属性 . 你不要在矩阵中使用'column'或'row'(我认为这就是你使用元组的原因) .你只想要一个阵列......
如果source是
np.zeros((100, 15))
和np.zeros ((15, 1))
,我认为你需要ravel用于创建index
和columns
的flatten数组数组:但是如果需要索引和列的默认值,只需使用DataFrame构造函数 -
index
和columns
将设置为np.arange(n)
,因为没有索引信息且没有列标签: