Skip to main content
 首页 » 编程设计

python之Pandas:混合数据类型的列;如何找到异常(exception)

2025年05月04日20fff_TT

我有一个大数据框,在读取它时,它给了我这个消息: DtypeWarning:列 (0,8) 具有混合类型。导入时指定 dtype 或设置 low_memory=False。

它应该是一列 float ,但我怀疑里面有一些字符串。我想识别它们,并可能删除它们。

我试过了 df.apply(lambda 行: isinstance(row.AnnoyingColumn, (int, float)), 1)

但这给了我一个内存不足的错误。

我想一定有更好的方法。

请您参考如下方法:

这将为您提供 True if float:

df.some_column.apply(lambda x: isinstance(x, float)) 

这将为您提供 True if int 或 string:

df.some_column.apply(lambda x: isinstance(x, (int,str))) 

因此,要删除字符串:

mask = df.some_column.apply(lambda x: isinstance(x, str)) 
df = df[~mask] 

删除 float 和字符串的示例:

$ df = pd.DataFrame({'a': [1,2.0,'hi',4]}) 
$ df 
    a 
0   1 
1   2 
2   hi 
3   4 
 
$ mask = df.a.apply(lambda x: isinstance(x, (float,str))) 
$ mask 
0    False 
1    False 
2     True 
3    False 
Name: a, dtype: bool 
 
$ df = df[~mask] 
$ df 
    a 
0   1 
3   4