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

如何在Pandas新建列公式中引用MultiIndex多级列索引的指定列

Pandas多层列索引按经纬度取值计算方案

你之前的代码无法运行是因为遗漏了最外层的wind_speed_100m列索引层级,多层列索引取值需要完整指定所有层级的匹配条件,以下是可直接运行的实现方案:

方式1:元组指定多层索引(最直观)

将列索引从外到内的所有层级值按顺序放在元组中,即可精准定位对应经纬度的风速列:

df['sum'] = df[('wind_speed_100m', -23.5, 150.00)] + \
            df[('wind_speed_100m', -23.5, 150.25)] + \
            df[('wind_speed_100m', -23.25, 150.00)] + \
            df[('wind_speed_100m', -23.25, 150.25)]

方式2:pd.IndexSlice简化筛选

适合需要批量筛选多组经纬度的场景,代码可读性更高:

import pandas as pd
idx = pd.IndexSlice

df['sum'] = df.loc[:, idx['wind_speed_100m', -23.5, 150.00]] + \
            df.loc[:, idx['wind_speed_100m', -23.5, 150.25]] + \
            df.loc[:, idx['wind_speed_100m', -23.25, 150.00]] + \
            df.loc[:, idx['wind_speed_100m', -23.25, 150.25]]

批量计算简化方案

如果需要对全部4个网格点的风速做汇总,无需逐个引用列,直接按行求和即可:

df['sum'] = df['wind_speed_100m'].sum(axis=1)

可先执行print(df.columns)确认列索引的层级顺序,避免因顺序不匹配导致取值错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:36:02