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

如何将Pandas DataFrame中超出Transformer模型最大序列长度的字符串列拆分为多行子文本并保留对应标签?

解决Pandas长文本拆分并保留标签的问题

没问题,这事儿用Pandas自带方法加个自定义拆分函数就能轻松搞定,我给你一步步拆解:

核心思路

我们要做的就是:给每个长文本生成拆分后的子文本列表,再把这个列表"炸开"成单独的行,让标签自动跟着每一行对应上。

具体实现代码

先把你的示例数据准备好,再写拆分逻辑:

import pandas as pd

# 初始化你的输入DataFrame
df = pd.DataFrame({
    "Text": ["This is a very long spam email", "This is a very long normal email"],
    "Label": [1, 0]
})

def split_text(text, max_seq_len=4):
    # 把文本按空格拆成单词列表
    words = text.split()
    # 按指定长度分批截取单词,再拼接成子文本
    return [' '.join(words[i:i+max_seq_len]) for i in range(0, len(words), max_seq_len)]

# 给每个文本生成拆分后的子文本列表
df['split_text'] = df['Text'].apply(lambda x: split_text(x, max_seq_len=4))
# 把列表展开成单独行,同时保留原标签
result_df = df.explode('split_text').drop(columns='Text').rename(columns={'split_text': 'Text'})

# 查看最终结果
print(result_df)

输出结果

运行代码后,会得到和你期望完全一致的输出:

TextLabel
0This is a very1
0long spam email1
1This is a very0
1long normal email0

关键细节说明

  • split_text函数:先把文本拆成单词,再用列表推导式按指定长度分批截取,最后拼接成子字符串。哪怕最后一批不足指定长度,也会完整保留(比如5个词会拆成4+1两组)。
  • explode方法:这是Pandas专门用来把列表型列拆成多行的工具,拆分后原索引会保留,每个子文本都会自动对应原标签,完美解决标签匹配问题。
  • 最后删掉原Text列,把拆分后的列重命名回Text,就得到了你要的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:57:33