带MultiIndex的DataFrame按列层级分组求最大值方案咨询
解决方案
错误原因
- 未指定
axis=1参数:groupby默认按行维度(axis=0)执行分组,你需要按列维度的第二级索引分组,必须显式指定axis=1。你之前的写法默认按行分组,传入的分组键长度正好匹配行的数量,分组后列还是全部500列,所以得到100×500的错误结果。 - 分组键选择错误:
df.columns.levels[1]返回的是第二级索引的去重唯一值列表,长度仅为100,和DataFrame总列数500不匹配,无法和列一一对应完成正确分组。
正确实现
使用df.columns.get_level_values(1)获取每一列对应的第二级索引值作为分组键,该返回值长度和总列数完全匹配,同时指定按列分组即可,该写法同时兼容Pandas和Dask DataFrame,不需要用到level参数:
# 按列的第二级索引分组,取同组最大值 result = df.groupby(df.columns.get_level_values(1), axis=1).max()
执行后result.shape为(100, 100),正好对应你需要的输出网格,每个值就是对应网格点到所有路径点的最大距离。
内容的提问来源于stack exchange,提问作者A.Gharbi
相关产品推荐
相关产品推荐

