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

如何在Pandas DataFrame中生成包含其他行数据的新列

提取同行评审中另一位评审的分数

针对你的需求,这里提供两种简洁的Pandas实现方案,均能保留原有所有列:

方法一:利用分组求和(推荐)

该方法通过计算每个被评审者(reviewee)的总分,减去当前评审者的分数,直接得到另一位评审者的打分。优势是不依赖行顺序,且能自然处理两位评审分数相同的场景:

import pandas as pd

# 原始数据
data = {'reviewer': ['A', 'B', 'C', 'D', 'E', 'F'],
        'reviewee':['G','G','H','H','I','I'],
        'reviewer score of reviewee':[1,2,0,0,1,2]}
df = pd.DataFrame(data)

# 生成新列
df['other reviewer score of reviewee'] = df.groupby('reviewee')['reviewer score of reviewee'].transform('sum') - df['reviewer score of reviewee']

print(df)

输出结果与预期完全一致:

reviewer reviewee  reviewer score of reviewee  other reviewer score of reviewee
0        A        G                            1                                2
1        B        G                            2                                1
2        C        H                            0                                0
3        D        H                            0                                0
4        E        I                            1                                2
5        F        I                            2                                1

方法二:组内行交换

如果能保证每个reviewee对应的两行是连续排列的,可以用组内位移的方式交换分数:

df['other reviewer score of reviewee'] = df.groupby('reviewee')['reviewer score of reviewee'].transform(
    lambda x: x.shift(-1).fillna(x.shift(1))
)

该方法通过shift(-1)取组内下一行的分数,最后一行用shift(1)补上上一行的分数,实现组内分数互换。但缺点是依赖行的排列顺序,若组内行顺序被打乱则会出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:10:07