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

Pandas multi-index dataframe同名项vlookup查询及动态平均值计算方法

最优实现方案

无需拆分出两个独立DataFrame再做外连接,直接对原多层索引DataFrame做结构转换后分组聚合即可,代码更简洁,性能也更优。

核心逻辑是利用pandas的reshape能力把宽表转长表,直接用内置的mean()方法就能自动匹配你的动态平均值规则:算术平均值默认会对非空值求平均,商品出现几周就有几个有效数值,刚好对应除以出现周数的要求。


完整代码示例

1. 模拟原DataFrame结构(你可跳过这步直接用自己的真实数据)

import pandas as pd

# 构造和你示例结构一致的多层列索引DataFrame
cols = pd.MultiIndex.from_tuples([
    ('week1', 'Name'), ('week1', 'Value'),
    ('week2', 'Name'), ('week2', 'Value')
])
data = [
    ['a', 0.1, 'b', 0.6],
    ['b', 0.3, 'a', 0.3],
    ['c', 0.5, 'd', 0.1],
    ['d', 0.7, 'e', 0.4]
]
df = pd.DataFrame(data, columns=cols)

2. 核心处理代码

# 把多层列的宽表转成「周、商品名、数值」结构的长表
long_df = df.stack(level=0).reset_index(drop=True)
# 按商品名分组求平均值,自动匹配动态除数规则
result = long_df.groupby('Name')['Value'].mean().reset_index(name='Average_Value')

3. 输出结果验证

打印result即可得到你需要的最终表:

Name  Average_Value
0    a            0.2
1    b            0.4
2    c            0.5
3    d            0.4
4    e            0.4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:30:02