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

如何利用Pandas多级索引(MultiIndex)计算各坐标点不同温度下的测量值差值?

如何利用Pandas多级索引(MultiIndex)计算各坐标点不同温度下的测量值差值?

嘿,这个需求太典型了,咱们借助Pandas的多级索引特性,就能用非常pythonic的方式搞定!给你分享几个简洁的实现思路:

方法一:用xs(Cross-Section)直接提取对应温度的数据做差值

这种方法最直观,直接把两个温度下的H值分别提取出来,Pandas会自动按(X,Y)索引对齐,直接相减就行:

# 提取T=125时的H数据
h_125 = df.xs(125, level='T')['H']
# 提取T=25时的H数据
h_25 = df.xs(25, level='T')['H']
# 计算差值并整理成目标格式
dH = h_125 - h_25
result = dH.reset_index(name='dH').to_dict('records')

运行后result就是你想要的字典列表啦!

方法二:用unstack把温度转成列再计算

如果后续需要处理更多温度的差值,这种方法扩展性更好,先把T这层索引转成列,再直接做列间运算:

# 将T层级的索引转为列
df_unstacked = df.unstack(level='T')
# 计算125℃与25℃的H差值
df_unstacked['dH'] = df_unstacked['H'][125] - df_unstacked['H'][25]
# 筛选需要的列并整理格式
result = df_unstacked['dH'].reset_index().to_dict('records')

方法三:用groupby按坐标分组计算

如果需要对每个坐标组做更复杂的自定义计算,用分组的方式更灵活:

def compute_difference(group):
    # 从组内提取对应温度的H值并计算差值
    return group.xs(125, level='T')['H'].iloc[0] - group.xs(25, level='T')['H'].iloc[0]

# 按X、Y分组后应用自定义函数
result = df.groupby(['X', 'Y']).apply(compute_difference).reset_index(name='dH').to_dict('records')

这几种方法都能高效得到你要的结果,其中第一种方法最简洁直接,适合你当前的场景~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:59:33