如何从熊猫数据帧中获取2d numpy数组? - 形状错误

Mos*_*afa 4 python numpy pandas

我想从一个pandas数据帧的列中获取一个2d-numpy数组df,每个行中都有一个numpy向量.但如果我这样做

df.values.shape
Run Code Online (Sandbox Code Playgroud)

我得到:(3,)而不是得到:(3,5)

(假设数据框中的每个numpy向量都有5个维度,并且数据框有3行)

什么是正确的方法?

unu*_*tbu 7

理想情况下,通过找到一种不同的方式来首先定义DataFrame,避免陷入这种情况.但是,如果您的DataFrame看起来像这样:

s = pd.Series([np.random.randint(20, size=(5,)) for i in range(3)])
df = pd.DataFrame(s, columns=['foo'])
#                   foo
# 0   [4, 14, 9, 16, 5]
# 1  [16, 16, 5, 4, 19]
# 2  [7, 10, 15, 13, 2]
Run Code Online (Sandbox Code Playgroud)

然后你可以通过调用pd.DataFrame数组列表将它转换为形状(3,5)的DataFrame :

pd.DataFrame(df['foo'].tolist())
#     0   1   2   3   4
# 0   4  14   9  16   5
# 1  16  16   5   4  19
# 2   7  10  15  13   2

pd.DataFrame(df['foo'].tolist()).values.shape
# (3, 5)
Run Code Online (Sandbox Code Playgroud)

  • 或者,您也可以这样做: np.asarray(df['foo'].tolist()) (2认同)