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

Python:拆分DataFrame文本行为段落并保留文档ID

问题解决:拆分DataFrame中文档段落并保留原ID

错误原因分析

你的代码报错TypeError: string indices must be integers,核心问题是:
dataframe.to_json(orient="records")返回的是JSON格式的字符串,而非可直接遍历的字典列表。当你for doc in docs时,实际是在逐个遍历字符串的字符,此时doc是单个字符,自然无法用doc["id"]这种字典索引方式。

推荐解决方案:Pandas原生方法(高效简洁)

利用Pandas的str.split和explode方法,几行代码就能完成拆分和展开,适合处理大数据量:

import pandas as pd

# 原始数据
data={'id':['1','2','3'], 'doc':['Paragraph 1.\nParagraph 2.\nParagraph 3.', 'Paragraph 1.\nParagraph 2.', 'Paragraph 1.\nParagraph 2.\nParagraph 3.\nParagraph 4.']}
df=pd.DataFrame(data)

# 拆分段落并展开为每行一个段落
df['paragraph'] = df['doc'].str.split('\n')
result_df = df.explode('paragraph').drop(columns=['doc'])

# 输出结果
print(result_df)

输出结果:

id       paragraph
0  1    Paragraph 1.
0  1    Paragraph 2.
0  1    Paragraph 3.
1  2    Paragraph 1.
1  2    Paragraph 2.
2  3    Paragraph 1.
2  3    Paragraph 2.
2  3    Paragraph 3.
2  3    Paragraph 4.

修正你的自定义函数

如果坚持用循环实现,只需将to_json替换为to_dict(orient="records"),同时调整段落拆分逻辑:

from typing import List
import pandas as pd

def split_into_paragraphs(dataframe): 
    docs = dataframe.to_dict(orient="records")  # 改用to_dict获取字典列表
    paragraphs: List[str] = []
    doc_indices: List[str] = []
    for doc in docs:         
        # 拆分当前文档的所有段落
        paras = doc["doc"].split("\n")
        for para in paras:
            paragraphs.append(para.strip())  # 可选:去除段落前后空白
            doc_indices.append(doc["id"])
    # 返回DataFrame更便于后续处理,也可返回两个列表
    return pd.DataFrame({"id": doc_indices, "paragraph": paragraphs})

# 测试函数
data={'id':['1','2','3'], 'doc':['Paragraph 1.\nParagraph 2.\nParagraph 3.', 'Paragraph 1.\nParagraph 2.', 'Paragraph 1.\nParagraph 2.\nParagraph 3.\nParagraph 4.']}
df=pd.DataFrame(data)
result = split_into_paragraphs(df)
print(result)

额外注意事项

  • 如果实际数据中存在空段落(比如连续换行),可以在拆分后过滤空字符串:paras = [p.strip() for p in doc["doc"].split("\n") if p.strip()]
  • 无论ID是纯数字还是字符组合,两种方案都能正确保留原ID格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:40:17