pandas.errors.DtypeWarning#

exception pandas.errors.DtypeWarning[源代码][源代码]#

从文件中读取列时遇到不同数据类型时发出的警告。

对于数据类型不兼容的情况会引发此错误。当 read_csvread_table 在给定 CSV 文件的某一列(或多列)中遇到不一致的数据类型时,可能会发生这种情况。

参见

read_csv

将 CSV(逗号分隔)文件读取到 DataFrame 中。

read_table

将通用分隔文件读取到 DataFrame 中。

备注

当处理较大的文件时会发出此警告,因为 dtype 检查是按读取的每个块进行的。

尽管有警告,CSV 文件在一个列中读取了混合类型,这将是一个对象类型。请参见下面的示例以更好地理解这个问题。

例子

这个示例创建并读取一个包含 intstr 列的大型 CSV 文件。

>>> df = pd.DataFrame(
...     {
...         "a": (["1"] * 100000 + ["X"] * 100000 + ["1"] * 100000),
...         "b": ["b"] * 300000,
...     }
... )  
>>> df.to_csv("test.csv", index=False)  
>>> df2 = pd.read_csv("test.csv")  
... # DtypeWarning: Columns (0: a) have mixed types

需要注意的是 df2 将包含相同输入 ‘1’ 的 strint

>>> df2.iloc[262140, 0]  
'1'
>>> type(df2.iloc[262140, 0])  
<class 'str'>
>>> df2.iloc[262150, 0]  
1
>>> type(df2.iloc[262150, 0])  
<class 'int'>

解决这个问题的一种方法是使用 read_csvread_table 函数中的 dtype 参数来明确转换:

>>> df2 = pd.read_csv("test.csv", sep=",", dtype={"a": str})  

没有发出警告。