pandas.errors.DtypeWarning #

异常 pandas.errors。DtypeWarning [来源] #

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

因 dtype 不兼容而引发。每当read_csvread_table在给定 CSV 文件的列中遇到不一致的数据类型时,就会发生这种情况。

也可以看看

read_csv

将 CSV(逗号分隔)文件读入 DataFrame。

read_table

将通用分隔文件读入 DataFrame。

笔记

处理较大文件时会发出此警告,因为每个块读取都会进行数据类型检查。

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

例子

此示例创建并读取一个大型 CSV 文件,其中的列包含 intstr

>>> 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) have mixed types

值得注意的是,对于同一输入“1”,它将df2同时包含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})  

没有发出警告。