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

如何遍历DataFrame中存储服务列表的列并按规则分类交易类别

解决方法

首先确认Services列的数据类型,如果是从CSV等文件读取的,大概率是字符串形式的列表,需要先转换为Python原生列表类型。

步骤1:格式转换(仅当Services为字符串时需要)

import ast
# 将字符串格式的列表转为真实列表
df['Services'] = df['Services'].apply(ast.literal_eval)

步骤2:分类赋值,两种实现方案

方案1:apply遍历(写法简单易读,适合中小数据量)

def classify_transaction(service_list):
    # 统一转小写避免大小写匹配问题
    has_threading = any("threading" in s.lower() for s in service_list)
    if not has_threading:
        return "Other"
    # 检查是否存在非threading类服务
    has_other_service = any("threading" not in s.lower() for s in service_list)
    return "Thread and oth" if has_other_service else "Threading"

df["Class"] = df["Services"].apply(classify_transaction)

方案2:向量化操作(速度更快,适合十万条以上的大数据量)

import numpy as np

# 展开服务列表判断每个服务类型,分组聚合得到每行的特征
exploded_services = df["Services"].explode().str.lower()
has_thread = exploded_services.str.contains("threading").groupby(level=0).any()
all_thread = exploded_services.str.contains("threading").groupby(level=0).all()

# 按规则赋值
df["Class"] = np.select(
    condlist=[~has_thread, has_thread & ~all_thread, has_thread & all_thread],
    choicelist=["Other", "Thread and oth", "Threading"]
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:06:03