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

如何对DataFrame中索引前缀匹配的Prediction列值求和?

解决方案

我来帮你搞定这个需求,咱们先理清楚思路:你的索引都是以D0/D1结尾的,核心是把**共享同一前缀(去掉最后一位数字)**的行分组,筛选出每组有2条数据的组,再生成操作描述和求和结果。

完整代码实现

import pandas as pd

# 先构造你提供的DataFrame
data = {'Prediction': [0, 8, 1, 5, 3, 9, 4, 9, 5, 3, 5, 7, 4, 1, 9]}
index_list = ['C11D0', 'C11D1', 'C12D0', 'C12D1', 'C13D0', 'C13D1', 
              'C14D0', 'C14D1', 'C15D0', 'C15D1', 'C1D0', 'C2D0', 'C3D0', 'C4D0', 'C4D1']
df = pd.DataFrame(data, index=index_list)

# 1. 按"去掉最后一位的索引前缀"分组
# 2. 筛选出每组恰好有2条数据的组(只处理需要相加的成对情况)
filtered_groups = df.groupby(df.index.str[:-1]).filter(lambda x: len(x) == 2).groupby(df.index.str[:-1])

# 3. 生成操作描述列和求和结果列
result_df = filtered_groups.agg(
    Operation=lambda x: '+'.join(x.index),  # 拼接两个索引作为操作描述
    Addition_Result=lambda x: x['Prediction'].sum()  # 对Prediction列求和
).reset_index(drop=True)

# 查看结果
print(result_df)

输出结果

Operation  Addition_Result
0  C11D0+C11D1                8
1  C12D0+C12D1                6
2  C13D0+C13D1               12
3  C14D0+C14D1               13
4  C15D0+C15D1                8
5   C4D0+C4D1                10

补充说明

如果你的需求确实是严格匹配前4个字符(比如部分索引长度不同),只需要把分组键改成df.index.str[:4]即可,但根据你给出的示例,显然按"去掉最后一位的前缀"分组更符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:12:48