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

如何将pandas DataFrame的两个文本列同步分块并扩展对应行

双文本列同步拆分扩展Pandas DataFrame实现方案

核心实现逻辑如下:

  • 对每行的两个文本列分别分词
  • 计算当前行需要拆分的总份数:你给出的示例中可以按text列每200词为基准计算份数,也可以调整为取两列分别按各自阈值拆分所需的最大份数,保证每块长度符合要求
  • 分别将两列的分词结果按总份数均匀分块
  • 最后将分块结果展开为多行即可

完整实现代码如下:

import pandas as pd
import math

# 示例原始DataFrame,可替换为你的实际数据
df = pd.DataFrame({
    'text': [' '.join([f'text_{i}' for i in range(1000)]), ' '.join([f'text_{i}' for i in range(500)])],
    'summary': [' '.join([f'sum_{i}' for i in range(200)]), ' '.join([f'sum_{i}' for i in range(120)])]
})

# 配置参数:text列每块目标词数,summary列会按相同份数自动适配每块长度
text_chunk_target = 200

def split_single_row(row):
    # 对两列分别分词
    text_words = row['text'].split()
    sum_words = row['summary'].split()
    # 计算总拆分份数(向上取整)
    chunk_total = math.ceil(len(text_words) / text_chunk_target)
    # 计算summary列每块的词数
    sum_chunk_size = math.ceil(len(sum_words) / chunk_total)
    # 两列分别按对应大小分块
    text_chunks = [' '.join(text_words[i*text_chunk_target : (i+1)*text_chunk_target]) for i in range(chunk_total)]
    sum_chunks = [' '.join(sum_words[i*sum_chunk_size : (i+1)*sum_chunk_size]) for i in range(chunk_total)]
    # 返回分块后的元组序列
    return pd.Series(zip(text_chunks, sum_chunks))

# 执行拆分、展开
post_df = df.apply(split_single_row, axis=1).stack().reset_index(drop=True)
# 拆分元组为独立列
post_df = pd.DataFrame(post_df.tolist(), columns=['text', 'summary'])

如果需要同时限制summary列的最大块长度,可以调整总份数的计算逻辑:

# 新增summary每块最大词数配置
sum_chunk_max = 50
chunk_total = max(
    math.ceil(len(text_words) / text_chunk_target),
    math.ceil(len(sum_words) / sum_chunk_max)
)

调整后可以保证两列的每块长度都不会超过各自设定的阈值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:27:03