如何在熊猫数据透视表上添加列(多列)

Posted

技术标签:

【中文标题】如何在熊猫数据透视表上添加列(多列)【英文标题】:how to add columns on pandas pivot table( multi-column) 【发布时间】:2021-06-09 07:33:34 【问题描述】:

请告诉我如何添加列? 此 DataFrame 要旋转。

|date      |country|type|qty|
|----------|-------|----|---|
|2021/03/01|jp     |A   |10 |
|2021/03/01|en     |C   |20 |
|2021/03/01|jp     |C   |15 |
|2021/03/02|jp     |A   |10 |
|2021/03/02|en     |A   |20 |
|2021/03/02|en     |C   |15 |

(旋转)

|     |2021/03/01|2021/03/02|
|-----|----------|----------|
|     |jp   |en  |jp   |en  |
|-----|----------|----------|
| A   |10   | 0  |50   |30  |
| C   |15   | 15 |0    |75  |

我想添加“汇率栏”

|     |2021/03/01           |2021/03/02            |
|-----|---------------------|----------------------|
|     |    jp    |    en    |    jp    |    en     |
|-----|---------------------|----------------------|
|     |cnt | rate|cnt  |rate|cnt | rate|cnt  |rate |
|-----|----------|----------|----------|-----------|
| A   |10  | 0.4 | 0   | 0  |50  | 1   | 30  | 0.26|
| C   |15  | 0.6 | 15  | 1  |0   | 0   | 85  | 0.74|

【问题讨论】:

【参考方案1】:

您可以将concatkeys 参数一起使用,将值除以总和,然后添加DataFrame.reorder_levels 并对MultiIndex 进行排序:

#change to your function if necessary
df1 = df.pivot_table(index='type', columns=['date','country'], values='qty', fill_value=0)
print (df1)
date    2021/03/01     2021/03/02    
country         en  jp         en  jp
type                                 
A                0  10         20  10
C               20  15         15   0

df = (pd.concat([df1, df1.div(df1.sum())], axis=1, keys=('cnt','rate'))
        .reorder_levels([1,2,0], axis=1)
        .sort_index(axis=1))
print (df)
date    2021/03/01               2021/03/02                   
country         en       jp              en            jp     
               cnt rate cnt rate        cnt      rate cnt rate
type                                                          
A                0  0.0  10  0.4         20  0.571429  10  1.0
C               20  1.0  15  0.6         15  0.428571   0  0.0

【讨论】:

感谢您的帮助!我能够正确地做到这一点~~~! 我忘了关闭它。对不起!

以上是关于如何在熊猫数据透视表上添加列(多列)的主要内容,如果未能解决你的问题,请参考以下文章

如何组合熊猫数据透视表中的列?

熊猫数据透视表手动对列进行排序[重复]

为熊猫数据透视表中的每个值列定义 aggfunc

基于 SQL Server 中的一列透视多列

excel统计每个数据出现次数 多行多列

如何在数据透视表上应用过滤器?