pandas如何简洁访问变量 兼容索引与非索引场景
解决方案
零改动兼容旧代码的原生方案
集成xarray设置多级索引时,给set_index传入drop=False参数即可:
df = df.set_index(['a', 'b'], drop=False)
该参数默认值为True,会把设为索引的列从普通列中删除;改为False后,被设为索引的a、b字段会同时作为普通列保留,多级索引结构完全符合xarray的接入要求,原有旧代码不需要任何修改,依然可以直接用df.b.min()的短写法获取最小值。
已生成无原列的多级索引DataFrame的简洁访问
如果处理的是已经完成索引设置、原列已被删除的DataFrame,不想重置索引的话,可以用两种简化写法:
- 直接从索引转成的临时DataFrame取值,比原生
get_level_values写法短30%以上:df.index.to_frame()['b'].min() - 封装一个1行的通用取值函数,一劳永逸解决列/索引访问差异问题:
def get_col(df, col_name): return df[col_name] if col_name in df.columns else df.index.get_level_values(col_name)
后续不管目标字段是普通列还是索引层级,都可以统一用get_col(df, 'b').min()的写法访问,不需要记忆字段到底属于列还是索引。
内容的提问来源于stack exchange,提问作者generic_user
相关产品推荐
相关产品推荐

