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

基于指定列值合并DataFrame行并求和的通用方法

解决方案:合并指定Col2值的行并按分组列聚合数值列

解决思路

先将Col2中值为2的行替换为1,保留其他值不变;再以所有分组列(如Col1及其他同类型列)+ 处理后的Col2作为分组依据,对所有数值列执行求和操作。这个逻辑能直接适配多分组列、多数值列的通用场景,避免复杂的条件分组问题。

代码实现

假设你的DataFrame名为df,以下是可直接复用的代码:

import pandas as pd

# 示例输入数据(可替换为你的真实数据)
df = pd.DataFrame({
    'Col1': ['A', 'A', 'B', 'B', 'B'],
    'Col2': [1, 2, 1, 2, 3],
    'Value': [1, 1, 2, 2, 3],
    # 可添加更多分组列/数值列测试通用性
    'Col3': ['X', 'X', 'Y', 'Y', 'Y'],
    'Value2': [5, 5, 6, 6, 7]
})

# 步骤1:统一Col2取值——将2替换为1,其余值保留
df['Col2'] = df['Col2'].replace(2, 1)

# 步骤2:定义分组列(所有类似Col1的分组维度)
# 方式1:自动排除数值列,适用数值列明确的场景
numeric_cols = ['Value', 'Value2']  # 替换为你的所有数值列名
group_cols = [col for col in df.columns if col not in numeric_cols]

# 方式2:手动指定分组列,更精准可控
# group_cols = ['Col1', 'Col3', 'Col2']

# 步骤3:分组求和,as_index=False保留原始列结构
result_df = df.groupby(group_cols, as_index=False).sum()

print(result_df)

示例输出

针对你提供的基础输入,运行后输出为:

Col1 Col2 Value
0    A    1     2
1    B    1     4
2    B    3     3

若添加了额外的分组列和数值列,会自动适配聚合逻辑,输出示例:

Col1 Col3 Col2  Value  Value2
0    A    X    1      2      10
1    B    Y    1      4      12
2    B    Y    3      3       7

方案通用性说明

  • 多分组列适配:无论有多少个类似Col1的分组维度,只需将其加入group_cols即可,聚合逻辑无需调整。
  • 多数值列适配:groupby().sum()会自动对所有非分组列的数值型列求和,无需逐个指定数值列。
  • 逻辑简洁:先统一目标列取值再分组,避开了复杂的条件分组判断,解决你之前用groupby未成功的问题。

内容的提问来源于stack exchange,提问作者T C Molenaar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:48:31