英文:
Pandas Pivoted Table - How to Pivoting By Multiple Columns
问题
pivoted.columns = pd.MultiIndex.from_product([pivoted.columns.levels[0], ['Sum', 'Comm']])
pivoted.sort_index(axis=1, level=0, sort_remaining=False)
英文:
I have following data:
data = {
'Product': ['Stock', 'Stock','FX', 'FX', 'Stock', 'FX'],
'Client': ['A', 'A','B', 'C', 'C','D'],
'Country': ['AU', 'JP','JP', 'HK', 'HK','SG'],
'Sum': [78, 88, 85,82, 87,99],
'Comm': [1,2,3,4,5,6]}
Product Client Country Sum Comm
0 Stock A AU 78 1
1 Stock A JP 88 2
2 FX B JP 85 3
3 FX C HK 82 4
4 Stock C HK 87 5
5 FX D SG 99 6
I tried pivot table
pivoted = df_1.pivot_table(
index=['Client', 'Product'],
columns='Country',
values=['Comm', 'Sum'])
and I got the result like this:
Comm Sum
Country AU HK JP SG AU HK JP SG
Client Product
A Stock 1.0 NaN 2.0 NaN 78.0 NaN 88.0 NaN
B FX NaN NaN 3.0 NaN NaN NaN 85.0 NaN
C FX NaN 4.0 NaN NaN NaN 82.0 NaN NaN
Stock NaN 5.0 NaN NaN NaN 87.0 NaN NaN
D FX NaN NaN NaN 6.0 NaN NaN NaN 99.0
How could I group it by Country at the top row?
Country AU HK JP SG
Sum Comm Sum Comm Sum Comm Sum Comm
Client Product
A Stock 78.0 1.0 NaN NaN 88.0 2.0 NaN NaN
B FX NaN NaN NaN Nan 85.0 3.0 NaN NaN
C FX NaN NaN 82.0 4.0 NaN NaN NaN NaN
Stock NaN NaN 87.0 5.0 NaN NaN NaN NaN
D FX NaN NaN NaN NaN NaN NaN 99.0 6.0
Does anyone know how do I do it?
答案1
得分: 0
pivoted.stack(0).unstack(-1)
国家 AU HK JP SG
Comm Sum Comm Sum Comm Sum Comm Sum
客户 产品
A 股票 1.0 78.0 NaN NaN 2.0 88.0 NaN NaN
B 外汇 NaN NaN NaN NaN 3.0 85.0 NaN NaN
C 外汇 NaN NaN 4.0 82.0 NaN NaN NaN NaN
股票 NaN NaN 5.0 87.0 NaN NaN NaN NaN
D 外汇 NaN NaN NaN NaN NaN NaN 6.0 99.0
英文:
You can simply stack and unstack:
pivoted.stack(0).unstack(-1)
Country AU HK JP SG
Comm Sum Comm Sum Comm Sum Comm Sum
Client Product
A Stock 1.0 78.0 NaN NaN 2.0 88.0 NaN NaN
B FX NaN NaN NaN NaN 3.0 85.0 NaN NaN
C FX NaN NaN 4.0 82.0 NaN NaN NaN NaN
Stock NaN NaN 5.0 87.0 NaN NaN NaN NaN
D FX NaN NaN NaN NaN NaN NaN 6.0 99.0
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论