数据类型

dtypes 不是大熊猫的原生。它们是大熊猫与 numpy 紧密结合的结果。

列的 dtype 无论如何都不必与列中包含的对象的 python 类型相关联。

在这里,我们有一个带浮筒的 pd.Series。dtype 将是 float

然后我们使用 astype 将它转换为对象。

pd.Series([1.,2.,3.,4.,5.]).astype(object)
0    1
1    2
2    3
3    4
4    5
dtype: object

dtype 现在是对象,但列表中的对象仍然是浮动的。逻辑如果你知道在 python 中,一切都是一个对象,并且可以被提升为对象。

type(pd.Series([1.,2.,3.,4.,5.]).astype(object)[0])
float

在这里,我们尝试将浮动转换为字符串。

pd.Series([1.,2.,3.,4.,5.]).astype(str)
0    1.0
1    2.0
2    3.0
3    4.0
4    5.0
dtype: object

dtype 现在是 object,但列表中条目的类型是 string。这是因为 numpy 不处理字符串,因此就好像它们只是对象而不关心。

type(pd.Series([1.,2.,3.,4.,5.]).astype(str)[0])
str

不要相信 dtypes,它们是熊猫建筑缺陷的神器。尽可能指定它们,但不要依赖于列上设置的 dtype。