数据类型
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。