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

pandas如何按|拆分列值、赋值布尔值并转换为字典

Pandas分隔字符串转布尔字典列实现方案

原有代码问题说明

  • 多值场景逻辑错误:拆分字符串后循环向列表追加单键字典,最终得到列表嵌套字典结构,没有将所有拆分出的键合并到同一个字典中
  • 赋值逻辑无效:直接遍历Series取到的是值拷贝,修改临时变量v不会同步更新到原DataFrame对应位置
  • 冗余判断:不需要单独判断字符串是否包含|,split('|')对无分隔符的字符串会返回仅含原字符串的单元素列表,逻辑可以统一

修正代码实现

方案1:修正版循环写法(适配原有编码习惯)

直接通过索引定位修改原DataFrame数值,去掉冗余判断,统一用字典推导式生成单字典:

import pandas as pd

for idx, val in df['Condition'].items():
    # 空值/Null值不做处理
    if pd.isna(val) or val == 'Null':
        continue
    # 拆分后直接生成所有键对应True的字典
    key_list = val.split('|')
    df.loc[idx, 'Condition'] = {k: True for k in key_list}

方案2:向量化写法(推荐,大数据量性能更优)

用map方法做整列映射,避免显式循环,代码更简洁:

import pandas as pd

def convert_str_to_dict(s):
    if pd.isna(s) or s == 'Null':
        return s
    return {k: True for k in s.split('|')}

df['Condition'] = df['Condition'].map(convert_str_to_dict)

效果验证

针对给出的样例输入,运行后输出完全匹配预期:

IDCondition
1Null
2{"NP": True}
3{"NP": True, "KH": True}
4{"KH": True, "PR": True, "MM": True}

注:样例中写的{"NP"=True}属于笔误,Python字典标准语法用冒号分隔键值对,如果需要输出JSON格式的字符串而非Python字典对象,可以引入json模块,将生成的字典用json.dumps()转成字符串即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:09:30