根据pandas documentation,pandas.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)
据我所知,这两种方法的行为完全相同。是否存在这两种方法表现不同的情况?如果是这样,有什么区别?
答案 0 :(得分:2)
这些 有一个微妙的差异,直到发布0.11.1( pimpl idiom )。
numpy数组中的每个元素必须具有相同的字节大小。字符串的问题是它们的字节大小不固定,因此object
dtype允许指向 do 具有固定字节大小的字符串。简而言之,str
对每个项目都有一个特殊的固定宽度,而object
允许变量字符串长度,或者实际上是任何对象。
在任何情况下,自版本0.11.1起,只要看到dtype=str
到dtype=object
就会自动转换,所以无论你使用什么都没关系,尽管我建议避免{ {1}}完全使用str
。