簡體   English   中英

熊貓數據透視表中的Multiindex

[英]Multiindex in pandas pivot table

我正在處理如下所示的數據透視表:

            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的工作方式還不太了解。

在此先感謝您提供的任何幫助!

可能內置了一些更聰明的方法,但是一種方法是將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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM