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

DataFrame中object类型列MINUTOS筛选超15分钟球员失效如何解决

为什么之前的筛选完全不生效

MINUTOS列当前是object类型,本质存储的是字符串文本,不是可计算的数值。Python对字符串做大小比较时,是逐位比对字符的编码值,根本不会按照数值大小判断,会出现比如"9" > "15"这类完全不符合实际的判断结果,这就是之前用.loc等各类筛选方法拿不到正确结果的核心原因。

具体解决流程
  • 第一步:把MINUTOS列转成可计算的数值类型
    通用转换代码,适配绝大多数带脏值的实战场景:
    df['MINUTOS'] = pd.to_numeric(df['MINUTOS'], errors='coerce')
    
    这里加errors='coerce'的作用是:遇到空字符串、特殊标记这类没法转成数字的内容时,自动转成缺失值NaN,不会因为个别异常值让整个转换流程报错中断。
  • 第二步:正常执行筛选
    转换完成后列已经变成数值类型,直接用条件筛选就能得到正确结果:
    # 提取出场时长大于15分钟的所有球员数据
    target_df = df[df['MINUTOS'] > 15]
    
特殊存储格式的适配方案

如果你的MINUTOS列存的是像"18:32"这类“分钟:秒”格式的文本,没法直接用通用方法转数值,就加个自定义处理逻辑拆分提取分钟数:

def parse_minute(raw_value):
    if pd.isna(raw_value):
        return None
    # 按冒号拆分文本,取冒号前的分钟部分转为浮点数
    return float(str(raw_value).split(':')[0])

df['MINUTOS'] = df['MINUTOS'].apply(parse_minute)
# 处理完成后执行上面的筛选逻辑即可

内容的提问来源于stack exchange,提问作者Sebastian Villalba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 02:15:03