如何在熊猫数据透视表上添加列(多列)
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】:您可以将concat
与keys
参数一起使用,将值除以总和,然后添加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
【讨论】:
感谢您的帮助!我能够正确地做到这一点~~~! 我忘了关闭它。对不起!以上是关于如何在熊猫数据透视表上添加列(多列)的主要内容,如果未能解决你的问题,请参考以下文章