Pandas如何按字符数条件合并DataFrame行以达到指定长度范围
Pandas 文本行合并控长实现方案
核心思路是先给每行文本分配分组ID,累计文本长度接近1000时就开启新分组,最后按分组拼接文本即可,实现代码如下:
完整实现代码
import pandas as pd from itertools import count # 1. 构造示例数据(实际使用时替换为你自己的DataFrame即可) df = pd.DataFrame({ 'column_text': [ "this is line 1", "this is line 2", # 更多文本行 ] }) # 2. 生成分组ID threshold = 1000 # 目标长度阈值 current_total_len = 0 group_counter = count(1) group_ids = [] for text_len in df['column_text'].str.len(): # 累加后超过阈值就开启新分组 if current_total_len + text_len > threshold: next(group_counter) current_total_len = 0 group_ids.append(next(group_counter) if current_total_len == 0 else group_ids[-1]) current_total_len += text_len df['group_id'] = group_ids # 3. 按分组合并文本,分隔符可按需调整(换行符/空格等) merged_df = df.groupby('group_id', as_index=False)['column_text'].apply('\n'.join) # 可以查看合并后每段的长度验证效果 print(merged_df['column_text'].str.len())
可调选项与边界处理
- 分隔符调整:如果不需要换行分隔不同行的文本,把
'\n'.join替换为' '.join或者你需要的其他分隔符即可 - 阈值调整:可以修改
threshold参数适配你需要的长度范围 - 超长行处理:如果存在单行文本本身长度就超过1100的情况,建议先对超长行做拆分,再走上述合并逻辑,避免最终段落超出长度范围
内容的提问来源于stack exchange,提问作者jos97
相关产品推荐
相关产品推荐

