首页 > 解决方案 > Pandas pivot_table 计算运行指数

问题描述

我有一个数据框

import pandas as pd
df = pd.DataFrame({
    'PART_UNIT': ['A','A','A','A','A'],
    'FiscalYear': ['2015/2016','2016/2017','2017/2018','2018/2019','2019/2020'],
    'BUY_UNIT_PRICE': [30,32,33,31,35]
})

我已经转换成一个 pivot_table

pivot = df.pivot_table(index='PART_UNIT', columns='FiscalYear', values='BUY_UNIT_PRICE', aggfunc='mean')
print(pivot)

FiscalYear  2015/2016  2016/2017  2017/2018  2018/2019  2019/2020
PART_UNIT
A                  30         32         33         31         35

我正在寻求帮助来确定年复一年的发展

我对这个示例数据的期望输出是

FiscalYear  2015/2016  2016/2017  2017/2018  2018/2019  2019/2020
PART_UNIT
A                 100     106.67     103,13      93,94      112,9

我将如何在 Pandas 中执行此操作?

我追求的功能与 excel 数据透视表中的功能相同,您可以在其中选择“将值显示为上一年的百分比”

标签: pythonpandaspivot-table

解决方案


你可以做一个pct_change()overaxis=1然后multiply100 最后add100 来匹配预期的输出:

m=(df.pivot_table(index='PART_UNIT', columns='FiscalYear', 
                       values='BUY_UNIT_PRICE', aggfunc='mean'))

m.pct_change(axis=1).mul(100).add(100,fill_value=0)

FiscalYear  2015/2016   2016/2017  2017/2018  2018/2019   2019/2020
PART_UNIT                                                          
A               100.0  106.666667    103.125  93.939394  112.903226

推荐阅读