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

如何解决pandas处理列数组去重时的malformed node or string报错

问题解决

报错根因

你遇到的报错本质是两个原因:

  1. Column2中存在NaN空值,ast.literal_eval()仅支持解析合法的Python字面量字符串,无法处理空值,传入NaN就会触发malformed node or string报错
  2. 若Column2中部分行的值本身已经是列表类型而非字符串格式的列表,传入ast.literal_eval()也会触发解析错误

修复后代码

import pandas as pd
import ast

def ddpe(a):
    # 空值直接返回不处理
    if pd.isna(a):
        return a
    # 已经是列表的直接去重,无需解析
    if isinstance(a, list):
        return list(dict.fromkeys(a))
    # 字符串格式的列表先解析再去重,加异常捕获兼容格式异常的行
    try:
        parse_list = ast.literal_eval(a)
        return list(dict.fromkeys(parse_list))
    except:
        return a

df['Column3'] = df['Column2'].apply(ddpe)

改动说明

  • 新增空值判断,符合你预期里NaN行直接返回NaN的需求
  • 兼容了Column2值为列表/字符串列表两种存储格式
  • 新增异常捕获逻辑,避免个别行格式异常导致整个apply操作中断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:36:11