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

如何在Pandas透视表生成的多索引列中实现列除法运算

解决Pandas MultiIndex下计算AOV并添加列的问题

问题原因

你的列是双层MultiIndex结构,执行dataframe['Spend'] / dataframe['Orders']会得到一个保留Pants/Shirts/Shoes第二层索引的DataFrame。直接用dataframe['AOV'] = ...赋值会失败,因为Pandas无法自动将单层列名映射到双层索引结构中。

解决方案1:使用pd.concat合并计算结果

先计算AOV并构建匹配的MultiIndex列,再合并到原DataFrame:

import pandas as pd

# 计算每个产品的AOV,保留第二层Product索引
aov_df = dataframe['Spend'] / dataframe['Orders']
# 为AOV数据生成对应的双层列索引
aov_df.columns = pd.MultiIndex.from_tuples(
    [('AOV', prod) for prod in aov_df.columns],
    names=[None, 'Product']
)
# 将AOV数据合并到原DataFrame
dataframe = pd.concat([dataframe, aov_df], axis=1)

解决方案2:直接通过MultiIndex位置赋值

利用loc指定双层索引位置,直接批量赋值计算结果:

# 计算AOV值
aov_values = dataframe['Spend'] / dataframe['Orders']
# 为每个产品对应的('AOV', Product)列赋值
dataframe.loc[:, ('AOV', slice(None))] = aov_values.values

验证结果

执行后查看列索引,会得到目标结构:

print(dataframe.columns)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:15:36