pandas.errors.DtypeWarning#

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

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

由于数据类型不兼容而引发。这可能会在任何时候发生 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

值得注意的是, df2 将同时包含两者 strint 对于相同的输入,为“1”。

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

解决此问题的一种方法是使用 dtype 参数中的 read_csvread_table 用于显式转换的函数:

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

没有发布任何警告。