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

Pandas中将存储列表的labels列转换为整数类型报错如何解决?

错误原因

你的labels列每个单元格存储的是字符串形式的数字列表,而非单个数字的字符串,直接调用astype(int)会尝试将[0, 1, 0, 0]这一整个字符串转换为单个整数,不符合整数格式要求,因此抛出报错。

解决方法

根据你后续使用标签的场景,选择对应处理方案:

  • 场景1:多标签分类需要将标签拆分为独立的布尔列使用
import ast
import pandas as pd

# 先将字符串格式的列表转为真实的Python列表
train_df["labels"] = train_df["labels"].apply(ast.literal_eval)
# 扩展为多列标签,列名可根据实际需求修改
train_df[["label_0", "label_1", "label_2", "label_3"]] = train_df["labels"].apply(pd.Series)
# 可选:删除原始的labels列
train_df.drop("labels", axis=1, inplace=True)
  • 场景2:训练代码支持直接传入列表作为标签,仅需要将列表内的元素转为整数
import ast

train_df["labels"] = train_df["labels"].apply(
    lambda x: list(map(int, ast.literal_eval(x)))
)
注意事项

ast.literal_eval仅会解析Python字面量结构,比直接使用eval()处理数据的安全性高,优先选择该方法做字符串列表的转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:57:03