【发布时间】:2022-01-15 04:46:39
【问题描述】:
熊猫系列是同质的还是异质的?
import pandas as pd
S=pd.Series([1,2,3,1.5,'US',True,False,'India'])
>>> S
0 1
1 2
2 3
3 1.5
4 US
5 True
6 False
7 India
dtype: object
>>> S[3]
1.5
>>> type(S[5])
<class 'bool'>
【问题讨论】:
-
同质。该系列的数据类型为
object。并且其中的所有内容都是对象的子类型(因为 python 中的所有内容都是对象的子类型)。 -
@Henry 根据该定义,Python 中没有数据是异构的。这是真的吗?
-
@wjandrea 在 python 中你可以有一个列表
[1, 'a', 6.2],它包含不同的类型并且是异构的。在转换为 dtype 对象结构的 numpy 和 pandas 中,而在 python 示例中,列表本身没有类型(它只是list)只有包含的元素具有类型。关键区别在于,您可以在不重新分配结构的情况下向列表中添加内容,向 Series 引入新值可能会强制 Series 的 dtype 发生变化。这与动态类型的 python 结构不同。 -
@Henry Gotcha,系列本身是同质的(系列必须根据定义)。但是它引用的数据是异构的,因为它是不同类型的,对吧?
-
@wjandrea 我相信这是正确的,因为 Series 必须只有一个 dtype(即使该 dtype 是
object)。不幸的是(如上所述)语义 dtypeobject很困难,因为在 python 中确实没有任何东西不能放入对象容器中,因为(几乎)所有东西都是对象。