Pandas pivot_table如何按Article分组合并Status与Qty列值
你可以在原有pivot_table输出的基础上,通过交换列索引层级、调整排序实现需求,不需要修改原来的透视逻辑:
最简实现代码
# 保留你原来的pivot代码 pivot_df = pd.pivot_table(data=df, index=["Time"], columns=["Article"], values=["Status", "Qty"], aggfunc="last") # 交换列的两个层级,再按列索引排序即可 pivot_df = pivot_df.swaplevel(axis=1).sort_index(axis=1)
固定值字段顺序(可选)
默认按字母排序的话,Status会排在Qty前面,如果要保证每个Article下先展示Qty再展示Status,可以加自定义排序逻辑:
pivot_df = pivot_df.swaplevel(axis=1) # 自定义排序规则:先按Article排序,再按值字段的指定顺序排序 pivot_df = pivot_df.sort_index( axis=1, level=[0, 1], key=lambda idx: idx.map({"Qty": 0, "Status": 1}) if idx.name is None else idx )
逻辑说明
swaplevel(axis=1):指定对列索引做层级交换,默认交换最顶层的两个层级,刚好可以把原来的[值字段, Article]顺序调整为[Article, 值字段]sort_index(axis=1):对列索引排序,把同一个Article对应的两列合并到相邻位置
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

