【问题标题】: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|

【问题讨论】:

    标签: pandas dataframe pivot-table multiple-columns multi-index


    【解决方案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
    

    【讨论】:

    • 感谢您的帮助!我能够正确地做到这一点~~~!
    • 我忘了关闭它。对不起!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    相关资源
    最近更新 更多