如何在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
相关产品推荐
相关产品推荐

