亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

執行透視時從列值獲取列標題

執行透視時從列值獲取列標題

largeQ 2023-09-12 10:31:04
我有一個如下所示的數據框:Customer    ProductCategory    TimeFrame    Sales    ReturnsGreg        Soap               CY           5        1Phil        Towels             PY           2        3Greg        Soap               PY           7        Greg        Towels             CY           3        我想旋轉這個 DataFrame 以便得到類似這樣的東西:Customer    ProductCategory    Measure    CY    PYGreg        Soap               Sales      5     7Greg        Soap               Returns    1      Greg        Towels             Sales      3     Greg        Towels             Returns           Phil        Towels             Sales            2Phil        Towels             Returns          3上面的缺失值應該為空。我不想填滿它們。我嘗試過一些不同的方法。我得到的最接近的是與,和pivot_table一起使用:meltgroupbystackpd.pivot_table(df, values=['Sales', 'Returns'], index=['Customer', 'ProductCategory'], columns=['TimeFrame'], aggfunc=np.sum) \.reset_index() \.melt(id_vars=['Customer', 'ProductCategory']) \.rename(columns={None: 'Measure'}) \.groupby(by=['Customer', 'ProductCategory', 'Measure', 'TimeFrame'])['value'] \.aggregate('first') \.unstack() \.reset_index()結果如下:TimeFrame   Customer    ProductCategory    Measure    CY    PY0           Greg        Soap               Returns    1.0   0.01           Greg        Soap               Sales      5.0   7.02           Greg        Towels             Returns    0.0   NaN3           Greg        Towels             Sales      3.0   NaN4           Phil        Towels             Returns    NaN   3.05           Phil        Towels             Sales      NaN   2.0這里的問題是一些空數值已被零填充。另外,即使我應用了reset_index,索引現在也被命名為“TimeFrame”?最后,我很好奇是否有一種我所缺少的更有效的方法來做到這一點。既然pivot_table我已經完成了大部分工作,是否有我缺少的參數或類似的東西?
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

你只需要melt并且pivot_table:


(df.melt(['Customer','ProductCategory','TimeFrame'], var_name='Measure')

   .pivot_table(index=['Customer','ProductCategory','Measure'],

                columns='TimeFrame',values='value')

   .reset_index()

)

輸出:


TimeFrame Customer ProductCategory  Measure   CY   PY

0             Greg            Soap  Returns  1.0  NaN

1             Greg            Soap    Sales  5.0  7.0

2             Greg          Towels    Sales  3.0  NaN

3             Phil          Towels  Returns  NaN  3.0

4             Phil          Towels    Sales  NaN  2.0

要刪除索引/列的名稱,請將上面的鏈接與rename_axis(index=None,columns=None)


查看完整回答
反對 回復 2023-09-12
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號