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

如何将Pandas DataFrame的字符串列按条件转换为字典,过滤值为0的键值对

错误原因

  • 直接调用dict(df["value"])是将整个value列的Series对象转为字典,会把行索引作为字典键,完全不符合单条字符串转字典的需求,因此报错。
  • 调用json.loads失败是因为你的value字符串不符合JSON规范:没有外层大括号,键也没有用引号包裹,无法被JSON解析器识别。

实现方案

方案1:高性能写法(适配百万行级数据,性能远高于apply)

直接通过列表推导式逐行处理,避免pandas apply的额外调度开销:

df["value"] = [
    {int(k): int(v) for k, v in (pair.split(":") for pair in s.split(",")) if int(v) != 0}
    for s in df["value"].tolist()
]

方案2:函数封装版(便于复用、易读)

def parse_value_str(s: str) -> dict:
    res = {}
    for kv_pair in s.split(","):
        k, v = kv_pair.split(":")
        v_int = int(v)
        if v_int != 0:
            res[int(k)] = v_int
    return res

df["value"] = df["value"].apply(parse_value_str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:45:05