Pandas如何拆分列内嵌套列表、按起止索引提取文本赋值标签并解决报错
报错原因
- 存在label为空列表
[]或NaN的行:空列表取索引0直接触发IndexError,NaN为float类型,做下标操作会触发TypeError: 'float' object is not subscriptable。 - 取值逻辑错误:label列为嵌套列表结构(如
[[506, 799, label_1]]),原代码直接用x["label"][0]作为切片起始索引,实际x["label"][0]是内层完整列表[506, 799, label_1],不符合切片语法要求。
正确实现代码
# 过滤label为NaN、空列表的无效行 df = df[df["label"].notna() & (df["label"].str.len() > 0)].copy() # 按标注索引提取子串 df["data"] = df.apply( lambda x: x["data"][x["label"][0][0] : x["label"][0][1] + 1], axis=1 ) # 提取最终label值 df["label"] = df["label"].str[0].str[2]
执行后即可得到期望的输出结果。
内容的提问来源于stack exchange,提问作者jos97
相关产品推荐
相关产品推荐

