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

如何移除pandas DataFrame输出索引与list(zip)生成的多余括号

代码修改方案
import pandas as pd
import numpy as np
import json

df = pd.read_csv("file")

def get_lengths(s):
    cols = s.index[::2]
    labels = s.index[::2]
    # 计算字段长度时额外计入拼接用的空格(仅非末尾字段需要加1位空格)
    str_list = list(s[cols])
    len_list = [len(s) + 1 for s in str_list[:-1]] + [len(str_list[-1])]
    l = list(np.cumsum(len_list))
    l = list(zip([0] + l[:-1], l))
    
    # 直接生成扁平化三元组,消除嵌套结构
    entities = [[start, end, label] for (start, end), label in zip(l, labels)]
    return (' '.join(str_list), {'entities': entities})


data_fr = df.apply(get_lengths, axis=1)
# 转成普通列表后再写入文件,移除顶层行索引
with open("file", "w", encoding="utf-8") as f:
    json.dump(list(data_fr), f, ensure_ascii=False)

修改说明

  • 扁平化entities结构:原代码list(zip(l, labels))会生成((起始,结束),标签)的嵌套结构,修改为列表推导式直接生成[起始,结束,标签]的三元组,符合格式要求
  • 修正偏移计算:原代码未计入字段拼接时插入的空格长度,调整长度计算逻辑,为非末尾字段的长度加1,和你给出的预期偏移对齐
  • 移除顶层数字索引:原代码直接调用Series的to_json()方法会自动把行索引作为顶层字典的键,修改为先把处理后的Series转为普通列表,再用json.dump写入文件,输出就是无索引的数组格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:12:01