Pandas:如何查找DataFrame中存储的复数类型数据
问题原因
pd.api.types.is_complex_dtype返回False是因为该API用于判断整列的统一数据类型是否为复数类型,而你的ir_mt_1y列是object类型,列内混合存储了float和复数两种类型的元素,不属于Pandas原生的统一复数数值类型,因此检测不生效。你看到head返回的都是float,是因为前5行刚好都是正常数值,复数存在于后续行中。
定位指定列的复数数据
执行以下代码即可筛选出ir_mt_1y列中所有包含复数的行:
# 筛选ir_mt_1y列中元素为复数类型的行 complex_rows_in_target_col = test[test['ir_mt_1y'].apply(lambda x: isinstance(x, complex))] # 输出对应行的索引和数值 print(complex_rows_in_target_col['ir_mt_1y'])
全表扫描所有复数数据
如果需要检查整个DataFrame所有列的复数数据,执行以下代码即可:
# 仅遍历object类型列(只有object列支持混存不同类型的元素) for col in test.select_dtypes(include='O').columns: is_complex_mask = test[col].apply(lambda x: isinstance(x, complex)) if is_complex_mask.any(): print(f"列【{col}】存在复数数据,共{is_complex_mask.sum()}行,行索引:") print(test[is_complex_mask].index.tolist())
内容的提问来源于stack exchange,提问作者makpalan
相关产品推荐
相关产品推荐

