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

pandas合并空行间连续行并保留空行的实现问题

问题1:调整分组标识s的逻辑

原来的分组逻辑把空白行算入了下一组非空白行的分组,导致空白行丢失、空字符串被拼接到下一段文本开头。
正确的分组逻辑需要满足两个规则:

  • 连续的非空白行分到同一组
  • 每个空白行单独作为一组
    分组标识s的计算代码如下:
# 触发分组切换的条件:当前行是空白行,或者上一行是空白行(新段落开始)
s = (df['text'].eq('') | df['text'].shift(fill_value='').eq('')).cumsum()

这个逻辑对应你的示例数据会生成4个分组,刚好匹配期望的输出分组规则。

问题2:条件拼接文本的实现

pandas没有直接名为mutate if的内置方法,但可以通过自定义聚合函数实现条件拼接的需求,逻辑是遍历待拼接的文本列表,仅在前一段文本不以标点结尾时才加句号拼接。
自定义拼接函数示例:

def conditional_join(text_series):
    # 先过滤掉空文本
    valid_texts = [t.strip() for t in text_series if t.strip()]
    if not valid_texts:
        return ''
    merged = valid_texts[0]
    for next_text in valid_texts[1:]:
        # 判断前一句末尾是否有结束标点,可根据需求补充其他标点
        if not merged.endswith(('.', '!', '?')):
            merged += '. ' + next_text
        else:
            merged += ' ' + next_text
    return merged
完整运行代码
import pandas as pd

# 示例输入
df = pd.DataFrame(data = [[1, "A Heading"],
                          [2, "I need to be with above."],
                          [3, ""],
                          [8, "I stand alone."],
                          [9, ""]],columns=['para_id','text'])

# 计算分组标识
s = (df['text'].eq('') | df['text'].shift(fill_value='').eq('')).cumsum()

# 自定义拼接函数
def conditional_join(text_series):
    valid_texts = [t.strip() for t in text_series if t.strip()]
    if not valid_texts:
        return ''
    merged = valid_texts[0]
    for next_text in valid_texts[1:]:
        if not merged.endswith(('.', '!', '?')):
            merged += '. ' + next_text
        else:
            merged += ' ' + next_text
    return merged

# 聚合得到结果
out = df.groupby(s).agg({
    'para_id': 'first',
    'text': conditional_join
}).reset_index(drop=True)

print(out)

运行输出和期望结果一致:

para_id                                 text
0        1  A Heading. I need to be with above.
1        3                                     
2        8                       I stand alone.
3        9                                     

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:06:04