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

如何在PySpark中合并连续重复的行

没问题,这事儿用pandas处理起来很直观,核心是先把连续重复的Col-1项划分为独立分组,再对每个分组的Col-2做字符串拼接就行。我给你写个完整的可运行示例:

步骤1:构造示例DataFrame

先把你提供的原始数据转换成标准的pandas DataFrame:

import pandas as pd

# 对应你给出的原始数据
data = {
    'Col-1': ['a', 'a', 'x', 'a', 'f', 'a', 'a'],
    'Col-2': ['d1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7']
}
df = pd.DataFrame(data)

步骤2:标记连续重复的分组

我们需要给每一组连续相同的Col-1值分配唯一的分组ID,这里用ne()(判断不等于)和shift()(取上一行值)的组合来识别分组边界,再用cumsum()生成递增的分组标识:

# 生成连续重复项的分组ID
group_ids = df['Col-1'].ne(df['Col-1'].shift()).cumsum()

步骤3:分组聚合合并字符串

按分组ID聚合数据,Col-1取每组的第一个值(因为同一组内值完全相同),Col-2用+拼接所有字符串:

# 执行分组合并操作
result_df = df.groupby(group_ids).agg(
    **{
        'Col-1': ('Col-1', 'first'),
        'Col-2': ('Col-2', lambda x: '+'.join(x))
    }
).reset_index(drop=True)

查看最终结果

运行print(result_df)就能得到你想要的输出:

Col-1    Col-2
0     a  d1+d2
1     x      d3
2     a      d4
3     f      d5
4     a  d6+d7

如果你的原始DataFrame列名带特殊符号(比如Col-1的横杠),记得在聚合时用引号包裹列名,避免语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:42:31