熊猫pivot_table计算运行索引

时间:2019-06-28 12:21:19

标签: python pandas pivot-table

我有一个DataFrame

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 = 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

我正在寻求帮助来确定每年的发展情况

  • 2015/2016 =索引100
  • 2016/2017 =(2016/2017值)/(2015/2016值)* 100
  • 2017/2018 =(2017/2018价值)/(2016/2017价值)* 100
  • ...

我希望此示例数据的输出为

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

我该如何在熊猫上做到这一点?

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

1 个答案:

答案 0 :(得分:2)

您可以对axis=1进行pct_change(),然后对multiply做100,最后对add做100,以匹配预期的输出:

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