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

如何在R中处理多索引数据集并生成自定义汇总行?

用Pandas实现案例内的汇总行插入

核心思路

按case字段分组,对每个案例单独计算3个汇总问题的得分,将汇总行拼接到原案例数据末尾,最后合并所有案例的结果即可。

具体实现代码

import pandas as pd

# 替换为你的实际数据读取方式,比如pd.read_csv("your_data.csv")
data = {
    'case': [1,1,1,1,1,2,2,2,2,2,3,3,3,3,3],
    'question': [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5],
    'rater1': [1,1,1,1,0,0,1,1,1,0,0,1,1,1,0],
    'rater2': [1,0,1,1,0,1,1,1,0,0,0,0,1,1,1]
}
df = pd.DataFrame(data)

# 处理单个案例分组的函数
def process_single_case(group):
    case_id = group['case'].iloc[0]
    
    # 生成question6的汇总行:问题1-3得分求和
    q6 = pd.DataFrame({
        'case': [case_id],
        'question': [6],
        'rater1': group[group['question'].isin([1,2,3])]['rater1'].sum(),
        'rater2': group[group['question'].isin([1,2,3])]['rater2'].sum()
    })
    
    # 生成question7的汇总行:问题4-5得分求和
    q7 = pd.DataFrame({
        'case': [case_id],
        'question': [7],
        'rater1': group[group['question'].isin([4,5])]['rater1'].sum(),
        'rater2': group[group['question'].isin([4,5])]['rater2'].sum()
    })
    
    # 生成question8的汇总行:问题1-5得分求和
    q8 = pd.DataFrame({
        'case': [case_id],
        'question': [8],
        'rater1': group['rater1'].sum(),
        'rater2': group['rater2'].sum()
    })
    
    # 拼接原数据与汇总行
    return pd.concat([group, q6, q7, q8], ignore_index=True)

# 分组处理并合并结果
final_df = df.groupby('case', group_keys=False).apply(process_single_case)

# 输出结果(可替换为保存到文件:final_df.to_csv("result.csv", index=False))
print(final_df.to_string(index=False))

代码说明

  • groupby('case', group_keys=False):按案例分组,避免分组键干扰最终结果的结构
  • process_single_case:针对每个案例,精准筛选对应问题的得分进行求和,生成指定格式的汇总行
  • pd.concat:将原案例数据与3个汇总行合并,保证每个案例的原始数据后紧跟汇总内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:05:21