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

Pandas多级索引DataFrame:计算各年份结果均值并添加相对偏差列

Pandas多级索引DataFrame:计算各年份结果均值并添加相对偏差列

嘿,这个需求用Pandas的多级索引操作就能轻松搞定,我给你一步步拆解怎么做:

1. 先把文本数据转换成真正的多级索引DataFrame

如果你还没把原始数据转成Pandas的DataFrame,先执行这段代码来构造和你示例一致的结构:

import pandas as pd

# 构建多级列索引
columns = pd.MultiIndex.from_tuples([
    ('2024', 'N'), ('2024', 'Result'), ('2024', 'SD'),
    ('2023', 'N'), ('2023', 'Result'), ('2023', 'SD'),
    ('2022', 'N'), ('2022', 'Result'), ('2022', 'SD')
])

# 填入数据
data = [
    [5, 20, 3, 5, 22, 4, 1, 21, 3],
    [4, 25, 2, 4, 25, 3, 4, 26, 5],
    [9, 22, 3, 9, 27, 1, 3, 23, 3],
    [3, 23, 5, 3, 16, 2, 5, 13, 4],
    [5, 27, 2, 5, 21, 3, 3, 19, 5]
]

df = pd.DataFrame(data, index=['A', 'B', 'C', 'D', 'E'], columns=columns)
df.index.name = 'Vendor'

2. 计算每个年份的Result均值

我们可以通过多级索引的xs方法提取所有年份的Result列,然后求每一列的均值:

# 提取所有年份的Result列,计算各年份均值
year_result_means = df.xs('Result', level=1, axis=1).mean()

比如2024年的均值就是(20+25+22+23+27)/5 = 23.4,和你示例里A的偏差20/23.4*100≈85.5完全对应。

3. 计算相对偏差并添加新列

遍历每个年份,计算每个Vendor的Result值相对于该年份均值的偏差,然后把偏差列插入到对应年份的列组中:

# 遍历每个年份,计算偏差并添加列
for year in year_result_means.index:
    # 计算偏差:(Result值 / 年份均值) * 100,保留1位小数
    deviation = (df[(year, 'Result')] / year_result_means[year]) * 100
    df[(year, 'Deviation')] = deviation.round(1)

4. 调整列的顺序(可选)

如果你想让Deviation列紧跟在SD后面,和你示例的结构一致,可以重新整理列顺序:

# 重新排列列,确保每个年份下的顺序是N → Result → SD → Deviation
sorted_columns = []
for year in ['2024', '2023', '2022']:
    sorted_columns.extend([(year, 'N'), (year, 'Result'), (year, 'SD'), (year, 'Deviation')])

df = df[sorted_columns]

最终效果

执行完上面的代码后,打印df就能得到你想要的结果:

Year     2024                    2023                      2022
Header   N Result SD Deviation   N Result SD Deviation     N Result SD Deviation
Vendor
A        5 20     3      85.5    5 22     4      99.1      1 21     3     112.9
B        4 25     2     106.8    4 25     3     112.6      4 26     5     140.9
C        9 22     3      94.0    9 27     1     121.4      3 23     3     124.7
D        3 23     5      98.3    3 16     2      71.9      5 13     4      70.4
E        5 27     2     115.4    5 21     3      94.6      3 19     5     103.2

备注:内容来源于stack exchange,提问作者Tumas04

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:38:09