熊猫:Coloumn,数据类型混合;如何找到例外

Jon*_*sen 1 python mixed types pandas

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

它应该是一列花车,但我怀疑其中有几根琴弦掉进去。我想识别它们,并可能将其删除。

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

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

我认为一定有更好的方法。

off*_*tus 5

如果为float,这将为您提供True:

df.some_column.apply(lambda x: isinstance(x, float))
Run Code Online (Sandbox Code Playgroud)

如果为int或string,则将为True:

df.some_column.apply(lambda x: isinstance(x, (int,str)))
Run Code Online (Sandbox Code Playgroud)

因此,要删除字符串:

mask = df.some_column.apply(lambda x: isinstance(x, str))
df = df[~mask]
Run Code Online (Sandbox Code Playgroud)

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

$ 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
Run Code Online (Sandbox Code Playgroud)