簡體   English   中英

Pivot 一個 pandas Z6A8064B5DF4794555500553C47C55057DZ 與多列

[英]Pivot a pandas dataframe with multiple columns

我有一個示例數據框,如下所示

df1 = pd.DataFrame({'Gender':['Male','Male','Male','Male','Female','Female','Female','Female','Male','Male','Male','Male','Female','Female','Female','Female'],
                'Year' :[2008,2008,2009,2009,2008,2008,2009,2009,2008,2008,2009,2009,2008,2008,2009,2009],
           'rate':[2.3,3.2,4.5,6.7,5.6,3.2,3.5,2.6,2.3,3.2,4.5,6.7,5.6,3.2,3.5,2.6],
           'Heading':['TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123',
                     'TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456'],
           'target':[31.2,33.4,33.4,35.2,35.2,36.4,36.4,37.2,31.2,33.4,33.4,35.2,35.2,36.4,36.4,37.2],
            'day_type':['wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend']})

我想轉置/旋轉它們以獲得如下所示的 output 但對於我的代碼,它會引發錯誤,如下所示

df1.pivot(index='Year', columns='Heading', values='rate')

在 SO post 的幫助下,我寫了這篇文章,但是對於 3 列,我不知道如何使它工作?

df1 = df1.pivot_table(index=['Year','Gender','day_type'],columns='Heading',values='rate').unstack()
df1.columns = ['_'.join(i) for i in df1.columns.tolist()]

我希望我的 output 如下所示,其中每年都作為一行,而該年的所有相應條目都作為列。

請注意,我沒有填寫值,因為表列結構更重要。

在此處輸入圖像描述

嘗試使用map ,您還需要取消unstack level

df1 = df1.pivot_table(index=['Year','Gender','day_type'],columns='Heading',values='rate').unstack([1,2])
df1.columns=df1.columns.map('_'.join)
df1
      TNMAB123_Female_wk  ...  TNMAB456_Male_wkend
Year                      ...                     
2008                 5.6  ...                  3.2
2009                 3.5  ...                  6.7
[2 rows x 8 columns]

暫無
暫無

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

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