我想从 pandas 数据帧 df
的列中获取一个 2d-numpy 数组,每一行都有一个 numpy 向量。但如果我这样做
df.values.shape
我得到:(3,)
而不是得到:(3,5)
(假设数据框中的每个 numpy 向量有 5 个维度,并且数据框有 3 行)
什么是正确的方法?
最佳答案
理想情况下,首先通过寻找不同的方式来定义 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]
然后您可以通过在数组列表上调用 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)
关于python - 如何从 Pandas 数据框中获取二维 numpy 数组? - 错误的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27667301/