如何将向量数组转换为数据帧?

时间:2018-01-26 01:13:26

标签: python pandas numpy

我有以下数组列表:

[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列

2 个答案:

答案 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]