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

在Pandas中按姓名分组计算周一至周五分数的百分比提升

解决方法

首先构造示例DataFrame:

import pandas as pd

data = {
    '姓名': ['Al', 'Al', 'Bo', 'Bo', 'Cy', 'Cy'],
    '日期': ['Monday', 'Friday', 'Monday', 'Friday', 'Monday', 'Friday'],
    '分数': [75, 88, 90, 100, 85, 95]
}
df1 = pd.DataFrame(data)

方法一:透视表转换(稳妥通用)

先将数据转为宽表,让每个人的周一、周五分数成为单独列:

df_pivot = df1.pivot(index='姓名', columns='日期', values='分数').reset_index()

按公式计算提升百分比并保留两位小数:

df_pivot['提升百分比'] = round(((df_pivot['Friday'] - df_pivot['Monday']) / df_pivot['Monday']) * 100, 2)

提取目标列得到最终结果:

df2 = df_pivot[['姓名', '提升百分比']]

方法二:分组聚合(简洁但依赖行顺序)

如果原始数据中每个姓名的行都是先Monday后Friday,可以直接分组计算:

df2 = df1.groupby('姓名').agg(
    提升百分比=('分数', lambda x: round(((x.iloc[1] - x.iloc[0])/x.iloc[0])*100, 2))
).reset_index()

两种方法最终得到的df2都符合需求:

姓名提升百分比
Al17.33
Bo11.11
Cy11.76

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:50:14