pandas.errors.DtypeWarning#
- exception pandas.errors.DtypeWarning[源代码][源代码]#
从文件中读取列时遇到不同数据类型时发出的警告。
对于数据类型不兼容的情况会引发此错误。当 read_csv 或 read_table 在给定 CSV 文件的某一列(或多列)中遇到不一致的数据类型时,可能会发生这种情况。
参见
read_csv
将 CSV(逗号分隔)文件读取到 DataFrame 中。
read_table
将通用分隔文件读取到 DataFrame 中。
备注
当处理较大的文件时会发出此警告,因为 dtype 检查是按读取的每个块进行的。
尽管有警告,CSV 文件在一个列中读取了混合类型,这将是一个对象类型。请参见下面的示例以更好地理解这个问题。
例子
这个示例创建并读取一个包含 int 和 str 列的大型 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’ 的 str 和 int。>>> 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_csv 和 read_table 函数中的 dtype 参数来明确转换:
>>> df2 = pd.read_csv("test.csv", sep=",", dtype={"a": str})
没有发出警告。