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

将含PASS/FAIL字符串列表的Pandas Series转换为数字

处理字符串形式列表的Pandas Series转数字类型

需求说明

现有一个Pandas Series,元素是字符串形式存储的列表,列表内只有PASS或FAIL值。需要按规则转换为数字:

  • 列表中至少有一个PASS → 对应值为1
  • 列表全为FAIL → 对应值为0

示例输入:
result列值分别为 "['PASS','FAIL']"、"['PASS','FAIL','PASS','FAIL']"、"['FAIL','FAIL']"
预期输出:1、1、0


解决方案

核心分两步:先把字符串形式的列表解析为实际的Python列表,再判断列表中是否存在PASS。

步骤1:导入依赖库

import pandas as pd
import ast

用ast.literal_eval解析字符串列表,比直接用eval更安全,能避免恶意代码执行风险。

步骤2:构造示例数据(可替换为你的实际数据)

data = {'result': ["['PASS','FAIL']", "['PASS','FAIL','PASS','FAIL']", "['FAIL','FAIL']"]}
df = pd.DataFrame(data)

步骤3:转换处理

可以分成两步清晰处理,也可以合并成一步:

方式1:分步处理(便于调试)
# 1. 将字符串转成实际列表
df['result_list'] = df['result'].apply(ast.literal_eval)
# 2. 判断是否含PASS,生成数字列
df['result_num'] = df['result_list'].apply(lambda x: 1 if 'PASS' in x else 0)
方式2:一步到位(精简代码)
df['result_num'] = df['result'].apply(lambda s: 1 if 'PASS' in ast.literal_eval(s) else 0)

最终结果

处理后df['result_num']即为目标数字Series,输出如下:

0    1
1    1
2    0
Name: result_num, dtype: int64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:20:14