您的阵列显示中的 list 一词不仅仅是为了让事情变得丑陋。它旨在传达有用的信息。另一方面,pandas 倾向于在其显示中隐藏该信息 - 使事情变得漂亮。尽可能尝试了解您正在使用的对象的基本性质,而不仅仅是它们的显示。
我们可以制作一个包含多个项目的系列(或数据框列):
In [27]: s =pd.Series([None, 'string','[1,2,3]',[1,2,3],np.array([1,2,3])])
In [28]: s
Out[28]:
0 None
1 string
2 [1,2,3]
3 [1, 2, 3]
4 [1, 2, 3]
dtype: object
注意列表和数组看起来是一样的,而且字符串没有引号。
如果我们向它请求一个数组:
In [29]: np.array(s)
Out[29]:
array([None, 'string', '[1,2,3]', list([1, 2, 3]), array([1, 2, 3])],
dtype=object)
np.array() 与以下内容相同:
In [30]: s.to_numpy()
Out[30]:
array([None, 'string', '[1,2,3]', list([1, 2, 3]), array([1, 2, 3])],
dtype=object)
在这个一维数组中,元素的性质更加明确。
除了显示嵌套列表外,项目列表类似:
In [31]: s.tolist()
Out[31]: [None, 'string', '[1,2,3]', [1, 2, 3], array([1, 2, 3])]
我们可以从最后 2 项创建一个二维数组,因为它们的长度都是 3:
In [32]: s[3:].tolist()
Out[32]: [[1, 2, 3], array([1, 2, 3])]
In [33]: np.array(s[3:].tolist())
Out[33]:
array([[1, 2, 3],
[1, 2, 3]])