如何将含一维数组的Pandas Series转换为二维NumPy数组?
将Pandas Series中的嵌套列表转换为二维NumPy数组
我明白你的问题——当Series里的每个元素都是列表时,直接用to_numpy()会得到一个dtype为object的一维数组,而不是你想要的二维数值数组。这里有几种简单的解决方法:
方法1:直接用np.array()转换Series的值
因为你的Series本质上是一个可迭代的列表集合,直接把Series的values传给np.array()就能自动生成二维数组:
import pandas as pd import numpy as np s = pd.Series([[1,2,3,4],[5,6,7,8]]) # 转换为二维数组 arr = np.array(s.values) print(arr) # 输出结果: # array([[1, 2, 3, 4], # [5, 6, 7, 8]])
方法2:先转成Python列表再转换
另一种等价的方式是先用to_list()把Series转换成普通的Python列表,再转成numpy数组:
arr = np.array(s.to_list())
方法3:用np.vstack()堆叠元素
如果你的Series里的子列表长度都一致(像示例这样),也可以用np.vstack()来逐个堆叠这些列表:
arr = np.vstack(s)
为什么直接用to_numpy()不行?
当Series的元素是嵌套列表时,Pandas的to_numpy()默认会将每个列表视为一个独立的对象,所以生成的数组是一维的,且dtype为object。上面的方法都是将这些子列表提取出来,重新组合成二维的数值数组。
内容的提问来源于stack exchange,提问作者Roman Wögerbauer
相关产品推荐
相关产品推荐

