在`pandas.read_csv`中,`str`和`object`数据类型有什么区别?

8
根据 pandas 文档pandas.read_csv 允许我为 CSV 文件中的列指定 dtype

dtype:类型名称或列->类型字典,默认值为 None 数据或列的数据类型。例如 {‘a’: np.float64, ‘b’: np.int32}(不支持 engine=’python’)。使用 strobject 以保留并不解释 dtype。

如果要将每个列都视为文本数据,则可以使用以下任一方式:

df = pandas.read_csv(... , dtype=str)

或者

df = pandas.read_csv(..., dtype=object)

据我所知,这两种方法的表现总是完全相同的。但是否存在这两种方法有不同表现的情况呢?如果有,那么它们之间的区别是什么?
1个回答

12

这些在发布0.11.1版本之前有微小的差别(请参见#3795问题)。

numpy数组中的每个元素在字节大小上必须相同。字符串的问题在于它们的字节大小不固定,因此object数据类型允许指向具有固定字节大小的字符串的指针。因此,简而言之,对于每个项,str具有特殊的固定宽度,而object允许可变的字符串长度,或者任何对象。

无论如何,在发布0.11.1版本之后,当遇到dtype=str时,自动转换为dtype=object,因此你可以使用任何一种方式,但我建议完全避免使用str,并只使用dtype=object


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接