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

时间:2016-05-17 17:25:08

标签: python python-3.x pandas

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

  

dtype :输入列名称或词典 - > type,默认无   数据或列的数据类型。例如。 {'a':np.float64,'b':np.int32}(不支持engine ='python')。使用 str object 来保留和不解释dtype。

要将每列视为文本数据,我可以使用

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

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

据我所知,这两种方法的行为完全相同。是否存在这两种方法表现不同的情况?如果是这样,有什么区别?

1 个答案:

答案 0 :(得分:2)

这些 有一个微妙的差异,直到发布0.11.1( pimpl idiom )。

numpy数组中的每个元素必须具有相同的字节大小。字符串的问题是它们的字节大小不固定,因此object dtype允许指向 do 具有固定字节大小的字符串。简而言之,str对每个项目都有一个特殊的固定宽度,而object允许变量字符串长度,或者实际上是任何对象。

在任何情况下,自版本0.11.1起,只要看到dtype=strdtype=object就会自动转换,所以无论你使用什么都没关系,尽管我建议避免{ {1}}完全使用str