熊猫:具有混合数据类型的Coloumn;如何查找例外

时间:2017-12-05 18:28:07

标签: python pandas types mixed

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

它应该是一列漂浮物,但我怀疑有一些字符串在那里偷偷摸摸。我想识别它们,并可能删除它们。

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

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

我认为必须有更好的方法。

1 个答案:

答案 0 :(得分:3)

如果浮动,这将给你True:

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

如果是int或string,这将给你True:

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

所以,删除字符串:

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

删除浮点数和字符串的示例:

$ 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