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

如何将DataFrame文本列按固定词数拆分至多行?

将Pandas DataFrame文本列按指定单词数拆分为多行

问题场景

现有如下Pandas DataFrame:

import pandas as pd

data = [
        ["a", "Lorem ipsum dolor sit amet, consectetur adipiscing elit."],
        ["b", "Etiam imperdiet fringilla est, eu tristique risus varius vitae."]
       ]
df = pd.DataFrame(data, columns=['name', 'text'])

原始DataFrame输出:

name                                               text
0    a  Lorem ipsum dolor sit amet, consectetur adipiscing elit.
1    b  Etiam imperdiet fringilla est, eu tristique risus varius vitae.

需要将text列的字符串按每行3个单词拆分为多行,拆分后保留原行的name列数据,最后一行若剩余单词不足3个也正常保留,期望得到如下结果:

name                       text
0    a          Lorem ipsum dolor
1    a      sit amet, consectetur
2    a           adipiscing elit.
3    b  Etiam imperdiet fringilla
4    b          est, eu tristique
5    b        risus varius vitae.

解决方案

通过文本分组+行展开的方式实现,具体步骤如下:

  1. 自定义函数,将单条文本拆分为单词列表后,按每3个单词一组拼接成新字符串;
  2. 对text列应用该函数,生成分组后的字符串列表;
  3. 使用explode()方法将列表展开为多行,并重置索引。

完整代码

import pandas as pd

data = [
        ["a", "Lorem ipsum dolor sit amet, consectetur adipiscing elit."],
        ["b", "Etiam imperdiet fringilla est, eu tristique risus varius vitae."]
       ]
df = pd.DataFrame(data, columns=['name', 'text'])

# 自定义分组函数:按n个单词为一组拆分文本
def split_by_word_count(text, n=3):
    words = text.split()
    # 按步长n分割单词列表,拼接为字符串
    return [' '.join(words[i:i+n]) for i in range(0, len(words), n)]

# 应用函数生成分组后的列表,再展开为多行
df['text'] = df['text'].apply(split_by_word_count)
result_df = df.explode('text').reset_index(drop=True)

print(result_df)

代码说明

  • split_by_word_count函数:先通过split()将文本拆分为单词列表,再用列表推导式按每3个单词为一组拼接成新字符串;
  • explode()方法:将列中的列表元素逐个展开为单独的行,同时保留其他列的对应值;
  • reset_index(drop=True):重置索引,避免展开后出现重复索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:50:21