我正在制作一个如下所示的数据透视表:
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 ...
我想只有一个列标题向量,可以是[Style,Site,AVS,116,120,...,Total,Sales Qty。]
但是对于“销售数量”。列,而不是目前那里的表我只想要总列(我现在可以用jj ['Sales Qty'] ['Total']访问它,所以我想我可以把它保存在另一个变量,删除它并在最后添加它)
到目前为止我尝试过的所有内容都失败了,我认为这是因为我不太了解MultiIndex如何工作。
提前感谢您提供的任何帮助!
答案 0 :(得分:0)
可能有一些更聪明的内置,但有一种方法是使用MultiIndex作为元组列表,并按照你的描述绘制出新的列名。
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)