如何对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
相关产品推荐
相关产品推荐

