由于pandas column中存在NaN,在用ast.literal_eval进行,出现ValueError: malformed node or string
错误原因ast模块是帮助Python应用来处理抽象的语法解析的,如果输入不是合法的Python数据类型,则ast.literal_eval将引发异常。
根据文档,ast.literal_eval()的input只能是字符或节点,且只能由以下Python文本结构组成:字符串、数字、元组、列表、dicts、boolean和None。ps: pandas的NAN实质是float类型,所以报错。
对每个实体都先设置为str数据类型
from ast import literal_eval df['column_2'] = df.column_1.apply(lambda x: literal_eval(str(x)))高级异常处理
def f(x):
try:
return literal_eval(str(x))
except Exception as e:
print(e)
return []
df['column_2'] = df.column_1.apply(lambda x: f(x))
参考链接
How to use ast.literal_eval in a pandas dataframe and handle exceptions



