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

Python实现SQL Case when等价逻辑报错,求Windows版本分类方案

问题解决:实现类似SQL Case When的Windows版本分类

错误原因

你编写的函数直接操作整个df['twitter']列,返回的是布尔值Series,但if判断需要单个布尔值,因此触发ValueError。apply是逐行处理逻辑,应该针对单个文本字符串做判断,而非整个列。

正确实现方式

方式1:修改apply函数(逐行处理)

调整函数参数为单个文本,对每行的字符串单独判断:

def windows_ver(text):
    lower_text = text.lower()
    if 'windows 11' in lower_text:
        return 'windows 11'
    elif 'windows 10' in lower_text:
        return 'windows 10'
    return 'windows 8 or older'

# 应用到twitter列
df['windows_version'] = df['twitter'].apply(windows_ver)

方式2:使用np.select(向量化操作,更接近SQL Case When)

适合大数据量场景,效率更高:

import numpy as np

# 定义判断条件(按优先级排序)
conditions = [
    df['twitter'].str.lower().str.contains('windows 11', na=False),
    df['twitter'].str.lower().str.contains('windows 10', na=False)
]
# 对应条件的返回值
choices = [
    'windows 11',
    'windows 10'
]

# 生成分类列,默认值为其他版本
df['windows_version'] = np.select(conditions, choices, default='windows 8 or older')

注意事项

  • 如果文本同时包含多个Windows版本关键词,会按条件列表的优先级顺序匹配第一个符合的规则(和原逻辑一致)。
  • 加入na=False参数可以处理twitter列的缺失值,避免因空值导致的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:53:18