如何遍历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
相关产品推荐
相关产品推荐

