我有一个大数据框,在读取它时,它给了我这个消息: 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
