You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据条目类型删除DataFrame指定列值为数字的行

报错原因

你原有代码中type(x['terms'])获取的是terms整列(即pandas.Series对象)的类型,并非列内单个元素的类型,type(x['terms']) is int的判断永远返回False,用布尔值直接索引DataFrame自然会触发KeyError。

修正方案

你需要逐行判断terms列元素的类型,筛选出非数字类型的行即可,推荐两种实现方式:

1. 布尔索引直接筛选保留合规行(更简洁)

# 仅排除Python原生的int、float类型
x = x[x['terms'].apply(lambda val: not isinstance(val, (int, float)))]

如果需要同时排除numpy封装的数值类型,可以扩展判断范围:

import numpy as np
x = x[x['terms'].apply(lambda val: not isinstance(val, (int, float, np.number)))]

2. 按原有逻辑用drop方法删除不合规行

x = x.drop(x[x['terms'].apply(lambda val: isinstance(val, (int, float)))].index)

扩展适配场景

如果你的数据中存在字符串格式的数字(比如值为"123"的字符串)也需要删除,可以用如下自定义判断逻辑:

def is_numeric_type(val):
    # 先判断是否为原生/ numpy数值类型
    if isinstance(val, (int, float, np.number)):
        return True
    # 再判断是否为可转成数字的字符串
    if isinstance(val, str):
        try:
            float(val)
            return True
        except ValueError:
            return False
    return False

x = x[~x['terms'].apply(is_numeric_type)]

内容的提问来源于stack exchange,提问作者Clement Attlee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:06:00