python - 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
我正在寻求帮助来确定年复一年的发展
- 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
我将如何在 Pandas 中执行此操作?
我追求的功能与 excel 数据透视表中的功能相同,您可以在其中选择“将值显示为上一年的百分比”
解决方案
你可以做一个pct_change()
overaxis=1
然后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
推荐阅读
- r - 如何从负二项分布中生成 n 个随机数?
- javascript - 如何解决无下划线悬挂错误而不在配置中关闭错误
- kubernetes - Kubernetes 1.17 中的 kubelet_volume_stats_*
- kdb - KDB - 从表列创建字典以克服 8 个函数参数限制?
- java - 有没有办法从 ArrayList 元素中创建一个字符串?
- java - 由于会话,JPQL 查询未执行
- c# - 使用 URI 编码动态创建图像 在 Web 窗体应用程序中使用延迟加载异步创建
- ansible - 如果是组成员,如何跳过 Ansible 主机
- php - 如何解决注意:PHP 中未定义的索引?
- git - 是否可以将存储库从 TFS2015 直接升级到 Azure devops git?