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

如何基于列条件合并Pandas近重复行并生成目标列?

Pandas近重复行合并分组实现方案

完整代码实现

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'Name': ['A', 'A', 'A', 'B', 'B'],
    'Text': ['Ab', 'Abc', 'Abcd', 'A', 'Ab'],
    'Value1': [2, 0, 2, 0, 2]
})

# 分组聚合生成目标DataFrame
result_df = df.groupby('Name').agg(
    # 合并Value1为列表
    Value1_concat=('Value1', list),
    # 统计Value1等于2的数量
    Criteria1=('Value1', lambda col: sum(col == 2)),
    # 拼接符合条件的Text(Value1=2对应的文本)
    Text_Criteria1=('Text', lambda col: '. '.join(col[df.loc[col.index, 'Value1'] == 2]) + '.'),
    # 统计分组内总元素数
    Total=('Value1', 'count')
).reset_index()

print(result_df)

代码说明

  • Value1_concat:通过list聚合函数直接将每个分组的Value1值打包成列表。
  • Criteria1:利用布尔序列求和(True会被识别为1),快速统计分组内Value1等于2的元素数量。
  • Text_Criteria1:通过索引匹配,筛选出当前分组中Value1等于2对应的Text值,用. 连接后添加末尾句号,和目标格式一致。如果不需要末尾句号,删除+ '.'即可。
  • Total:使用count聚合函数直接统计分组内的行数,也就是Value1_concat的总元素数。

运行结果

NameValue1_concatCriteria1Text_Criteria1Total
A[2, 0, 2]2Ab. Abcd.3
B[0, 2]1Ab.2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 09:35:19