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

如何将列表的列表拆分为单独列?解决AttributeError报错问题

问题与解决方案

问题描述

需要将嵌套列表拆分为ID、Form、Lemma等10个属性列,用于对比依存句法分析的预测文件与黄金标注文件,但执行以下代码时触发报错:

sep_lines = file_pred[0].str.split(" ", n=10, expand=True)
lines["ID"] = sep_lines[0]

报错信息:

AttributeError: 'list' object has no attribute 'str'

错误原因

file_pred[0]是Python原生列表对象,而.str是pandas库为Series/DataFrame类型提供的字符串处理专属属性,原生列表没有这个方法,因此触发属性不存在的错误。

解决方案

根据数据结构的不同,提供两种可行方案:

方案1:先转成pandas Series再拆分

如果file_pred是由每行文本字符串组成的列表(如["1 hello Hello ...", "2 world World ..."]),先将其转换为pandas Series,再使用.str.split:

import pandas as pd

# 将列表转为pandas Series
pred_series = pd.Series(file_pred)
# 按空格拆分,最多拆分为10列
sep_lines = pred_series.str.split(" ", n=10, expand=True)
# 为拆分后的列命名(对应依存句法标注的10个属性)
sep_lines.columns = ["ID", "Form", "Lemma", "UPOS", "XPOS", "Feats", "Head", "DepRel", "Deps", "Misc"]
# 将拆分结果合并到目标DataFrame lines中
lines = pd.concat([lines, sep_lines], axis=1)

方案2:用原生Python拆分后转DataFrame

如果更倾向于用原生Python处理列表,先对每个元素做拆分,再转换为DataFrame:

import pandas as pd

# 遍历列表,对每行字符串按空格拆分(最多拆10次)
split_rows = [line.split(" ", maxsplit=10) for line in file_pred]
# 将拆分后的二维列表转为DataFrame并指定列名
sep_lines = pd.DataFrame(split_rows, columns=["ID", "Form", "Lemma", "UPOS", "XPOS", "Feats", "Head", "DepRel", "Deps", "Misc"])
# 合并到目标DataFrame
lines = pd.concat([lines, sep_lines], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:20:29