Pandas 透视表 – 如何按多列进行透视

huangapple go评论124阅读模式
英文:

Pandas Pivoted Table - How to Pivoting By Multiple Columns

问题

  1. pivoted.columns = pd.MultiIndex.from_product([pivoted.columns.levels[0], ['Sum', 'Comm']])
  2. pivoted.sort_index(axis=1, level=0, sort_remaining=False)
英文:

I have following data:

  1. data = {
  2. 'Product': ['Stock', 'Stock','FX', 'FX', 'Stock', 'FX'],
  3. 'Client': ['A', 'A','B', 'C', 'C','D'],
  4. 'Country': ['AU', 'JP','JP', 'HK', 'HK','SG'],
  5. 'Sum': [78, 88, 85,82, 87,99],
  6. 'Comm': [1,2,3,4,5,6]}
  7. Product Client Country Sum Comm
  8. 0 Stock A AU 78 1
  9. 1 Stock A JP 88 2
  10. 2 FX B JP 85 3
  11. 3 FX C HK 82 4
  12. 4 Stock C HK 87 5
  13. 5 FX D SG 99 6

I tried pivot table

  1. pivoted = df_1.pivot_table(
  2. index=['Client', 'Product'],
  3. columns='Country',
  4. values=['Comm', 'Sum'])

and I got the result like this:

  1. Comm Sum
  2. Country AU HK JP SG AU HK JP SG
  3. Client Product
  4. A Stock 1.0 NaN 2.0 NaN 78.0 NaN 88.0 NaN
  5. B FX NaN NaN 3.0 NaN NaN NaN 85.0 NaN
  6. C FX NaN 4.0 NaN NaN NaN 82.0 NaN NaN
  7. Stock NaN 5.0 NaN NaN NaN 87.0 NaN NaN
  8. D FX NaN NaN NaN 6.0 NaN NaN NaN 99.0

How could I group it by Country at the top row?

  1. Country AU HK JP SG
  2. Sum Comm Sum Comm Sum Comm Sum Comm
  3. Client Product
  4. A Stock 78.0 1.0 NaN NaN 88.0 2.0 NaN NaN
  5. B FX NaN NaN NaN Nan 85.0 3.0 NaN NaN
  6. C FX NaN NaN 82.0 4.0 NaN NaN NaN NaN
  7. Stock NaN NaN 87.0 5.0 NaN NaN NaN NaN
  8. D FX NaN NaN NaN NaN NaN NaN 99.0 6.0

Does anyone know how do I do it?

答案1

得分: 0

你可以简单地使用stackunstack函数:

  1. pivoted.stack(0).unstack(-1)
  1. 国家 AU HK JP SG
  2. Comm Sum Comm Sum Comm Sum Comm Sum
  3. 客户 产品
  4. A 股票 1.0 78.0 NaN NaN 2.0 88.0 NaN NaN
  5. B 外汇 NaN NaN NaN NaN 3.0 85.0 NaN NaN
  6. C 外汇 NaN NaN 4.0 82.0 NaN NaN NaN NaN
  7. 股票 NaN NaN 5.0 87.0 NaN NaN NaN NaN
  8. D 外汇 NaN NaN NaN NaN NaN NaN 6.0 99.0
英文:

You can simply stack and unstack:

  1. pivoted.stack(0).unstack(-1)
  1. Country AU HK JP SG
  2. Comm Sum Comm Sum Comm Sum Comm Sum
  3. Client Product
  4. A Stock 1.0 78.0 NaN NaN 2.0 88.0 NaN NaN
  5. B FX NaN NaN NaN NaN 3.0 85.0 NaN NaN
  6. C FX NaN NaN 4.0 82.0 NaN NaN NaN NaN
  7. Stock NaN NaN 5.0 87.0 NaN NaN NaN NaN
  8. D FX NaN NaN NaN NaN NaN NaN 6.0 99.0

huangapple
  • 本文由 发表于 2023年3月7日 00:56:19
  • 转载请务必保留本文链接:https://go.coder-hub.com/75653667.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定