如何调整DataFrame多层列索引,合并重复年份列为按年分组结构?
解决方法
你可以通过对DataFrame的列多层索引进行排序来实现需求,核心是让同一年份下的所有子列聚集在一起,具体代码如下:
# 对列索引按「年份(第一层)→ 子列名(第二层)」的顺序排序 df_sorted = df.sort_index(axis=1, level=[0, 1])
原理说明:
你的原始DataFrame列索引的结构是:第一层为年份,但列是按子列名分组排列的(比如所有年份的PATIENTS列先排,再排所有年份的month列),第二层为子列名。通过sort_index指定按第一层(年份)优先排序,同一年份内再按第二层(子列名)排序,就能自动将同一个年份对应的所有子列(PATIENTS、month、diffs_24h等)聚合到该年份的层级下,形成你想要的列结构。
如果排序后子列的顺序不符合预期,还可以手动指定子列的排序优先级,示例如下:
# 自定义子列的顺序 custom_subcol_order = ['PATIENTS', 'month', 'diffs_24h', 'diffs_168h'] # 先按年份排序,再按自定义的子列顺序排序 df_sorted = df.sort_index( axis=1, level=[0, 1], key=lambda x: x.map({v:i for i,v in enumerate(custom_subcol_order)}) )
这样就能确保每个年份下的子列严格按照你指定的顺序排列。
内容的提问来源于stack exchange,提问作者Apollo
相关产品推荐
相关产品推荐

