我有以下数组列表:
[array([2, 1, 4, 1]), array([2, 4, 4, 2]), array([2, 2, 4, 0])]
我想把它变成一个带有标题" Vectors"的数据帧。看起来像这样:
"1x4 Vectors"
0 [2, 1, 4, 1]
1 [2, 4, 4, 2]
3 [2, 2, 4, 0]
我尝试使用
pd.DataFrame(name_of_data_with_vectors, columns = "4x1 Vectors")
但是,我收到以下错误: AssertionError:传递了1列,传递的数据有4列
答案 0 :(得分:2)
最简单的方法可能是使用dict
作为构造函数:
In [17]: data = [array([2, 1, 4, 1]), array([2, 4, 4, 2]), array([2, 2, 4, 0])]
In [18]: pd.DataFrame({'4x1 Vectors':data})
Out[18]:
4x1 Vectors
0 [2, 1, 4, 1]
1 [2, 4, 4, 2]
2 [2, 2, 4, 0]
注意,pandas
的设计并未考虑数组的用例。这就是为什么构造函数试图将您的数据参数解释为3x4
数据框而不是3x1
或者,改变"形状"列表中的columns
参数列表:
In [21]: pd.DataFrame([[d] for d in data], columns=['4x1 vectors'])
Out[21]:
4x1 vectors
0 [2, 1, 4, 1]
1 [2, 4, 4, 2]
2 [2, 2, 4, 0]
但我再说一遍:你几乎肯定不想这样做。 DataFrames
不能将数组作为元素运行良好。
答案 1 :(得分:1)
import pandas as pd
import numpy as np
arrays = [np.array([2, 1, 4, 1]), np.array([2, 4, 4, 2]), np.array([2, 2, 4, 0])]
df = pd.DataFrame(pd.Series(arrays), columns = ['1x4 Vectors'])
print(df)
1x4 Vectors
0 [2, 1, 4, 1]
1 [2, 4, 4, 2]
2 [2, 2, 4, 0]