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

如何将文本分句并生成每行一句的新DataFrame?

拆分Pandas DataFrame列表列,实现每行对应单个句子

别用循环拼接这种低效方式,Pandas自带的explode()方法就能完美解决你的需求,而且速度快很多。

正确实现步骤

  1. 先完成分句(你这部分代码没问题)
import nltk
import pandas as pd

# 生成分句后的列表列
df['sentences'] = df['text'].apply(lambda x: nltk.sent_tokenize(x))
  1. 用explode拆分列表并整理结构
    直接对sentences列执行explode,把列表里的每个句子拆成单独一行,同时保留对应filename和president的值,最后重命名列并选择需要的字段:
data_sentence = df.explode('sentences').rename(columns={'sentences': 'sentnew'})[['filename', 'president', 'sentnew']]

关于你原有代码的问题

如果你的循环代码运行后没得到预期结果,先检查df['sentences']的内容:确认每个单元格都是包含多个句子的列表,而非字符串或空值。可以用下面的代码排查:

# 检查sentences列的元素类型分布
print(df['sentences'].apply(type).value_counts())
# 查看前几行的分句结果
print(df['sentences'].head())

如果确实是列表类型,你的循环代码理论上能运行,但反复concat会导致数据量大时性能极差,所以优先用explode方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:32:39