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

Python Pandas:如何像求和一样对索引列内子列做减法?

实现类似求和的简洁减法操作

嘿,太懂你偏爱那种简洁优雅代码的感觉了!其实要实现每个索引列下两个子列的减法,咱们可以根据你的数据结构来选择合适的简便方法,下面给你两种实用方案:

方案1:针对固定子列名称的高效写法

如果你的子列名称是固定的(比如每个索引组下都有Value1和Value2),直接提取对应子列后相减就好,这种写法既简洁又高效,完全不输求和的优雅感:

# 假设你的数据是多层列索引,提取每个组的Value1减去Value2
result = df.xs('Value1', level=1, axis=1) - df.xs('Value2', level=1, axis=1)

方案2:通用型分组减法(子列不固定时用)

如果每个索引组下的子列名称不固定,但确保每个组里只有两个子列,那可以用groupby结合自定义lambda函数,完美复刻求和的链式写法逻辑:

# 按外层索引列分组,每组内第一个子列减第二个子列
result = df.groupby(level=0, axis=1).apply(lambda group: group.iloc[:, 0] - group.iloc[:, 1])

举个实际例子

假设你的数据结构是这样的多层列索引:

import pandas as pd
import numpy as np

columns = pd.MultiIndex.from_tuples([('GroupA', 'Sub1'), ('GroupA', 'Sub2'),
                                     ('GroupB', 'Sub1'), ('GroupB', 'Sub2')])
df = pd.DataFrame(np.random.randn(3,4), columns=columns)

求和用df.groupby(level=0, axis=1).sum(),而用上面的方案2就能得到每个Group下Sub1 - Sub2的结果,和求和写法一样简洁!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:47:41