Python 数据透视表中的多索引
我正在处理一个透视表,该透视表如下所示:Python 数据透视表中的多索引,python,pandas,multi-index,Python,Pandas,Multi Index,我正在处理一个透视表,该透视表如下所示: Style Site AVS End Qty. \ JP SIZE 116 120 140 ADULTS L M O OSFA S XL 0 50935801 2664 0 0 0 0 0 0 0 0
Style Site AVS End Qty. \
JP SIZE 116 120 140 ADULTS L M O OSFA S XL
0 50935801 2664 0 0 0 0 0 0 0 0 0 0 3
1 50935801 2807 0 0 0 0 0 0 0 0 0 0 3
2 50935801 2832 0 0 0 0 0 0 0 0 0 0 3
3 50935802 2702 1 0 0 0 0 0 1 0 0 0 0
4 50985101 2849 0 0 0 0 0 0 3 0 0 0 0
Sales Qty.
JP SIZE Total 116 120 140 ADULTS L M
0 3 0 0 0 0 0 0 ...
1 3 0 0 0 0 0 0 ...
2 3 0 0 0 0 0 0 ...
3 1 0 0 0 0 0 -1 ...
4 3 0 0 0 0 0 0 ...
我希望只有一个列标题向量,即[样式、站点、AVS、116、120、…、总计、销售数量。]
但是对于“Sales Qty.”列,而不是现在的表,我只想要total列(我现在可以使用jj['Sales Qty']['total']访问它,所以我想我可以将它保存在另一个变量中,删除它并在最后添加它)
到目前为止,我所尝试的一切都失败了,我想这是因为我还不太清楚多索引是如何工作的
提前感谢您在这方面提供的任何帮助 可能有更聪明的内置功能,但一种方法是将多索引作为元组列表使用,并按照您所描述的映射出新列名
def custom_rename(lvl1, lvl2):
if lvl1 == 'End Qty.':
return lvl2
elif lvl1 == 'Sales Qty.' and lvl2 == 'Total':
return 'Sales Qty.'
elif lvl2 == '':
return lvl1
else:
return '_'
然后应用于列并指定:
df.columns = [custom_rename(lvl1, lvl2) for lvl1, lvl2 in df.columns]
上面的“
被用作不再需要的列的标记,因此最后一步是删除这些列
df = df.drop('_', axis=1)
你能添加一些代码来重现这个数据帧吗?(例如原始帧和pivot调用的示例)