python - 取Python中数据透视表列之间的差异
问题描述
我有一个带有 Week 、 Campaign 、 Placement 和 Count 列的数据框。
为了按广告系列和展示位置比较每周计数,我创建了一个效果很好的数据透视表。如何创建具有这 2 周之间差异的新列(如果可能,以百分比表示)?
代码:
dfPivot = pd.pivot_table(dfPivot, values='Count',\
index=['Campaign', 'Placement'],columns=['Week'], aggfunc=np.sum)
电流输出:
Week 2019-10-27 2019-11-03
Campaign Placement Code
A 111111111 4288.0 615.0
111111112 243.0 11.0
111111113 598.0 30.0
111111114 1041.0 377.0
111111115 7759.0 161.0
B 111111111 1252.0 241.0
111111112 643.0 124.0
111111113 135.0 30.0
111111114 8753.0 2327.0
111111115 7242.0 112.0
预期输出:
Week 2019-10-27 2019-11-03 Difference
Campaign Placement Code
A 111111111 4288.0 615.0 -85.7%
111111112 243.0 11.0 -95.4%
111111113 598.0 30.0 -94.9%
111111114 1041.0 377.0 [...]
111111115 7759.0 161.0 [...]
B 111111111 1252.0 241.0 [...]
111111112 643.0 124.0 [...]
111111113 135.0 30.0 [...]
111111114 8753.0 2327.0 [...]
111111115 7242.0 112.0 [...]
谢谢!
解决方案
DataFrame.pct_change
与按位置选择最后一行和按100
百分比选择倍数一起使用:
df['diff'] = df.pct_change(axis=1).iloc[:, -1].mul(100)
print (df)
2019-10-27 2019-11-03 diff
Campaign Placement Code
A 111111111 4288.0 615.0 -85.657649
111111112 243.0 11.0 -95.473251
111111113 598.0 30.0 -94.983278
111111114 1041.0 377.0 -63.784822
111111115 7759.0 161.0 -97.924990
B 111111111 1252.0 241.0 -80.750799
111111112 643.0 124.0 -80.715397
111111113 135.0 30.0 -77.777778
111111114 8753.0 2327.0 -73.414829
111111115 7242.0 112.0 -98.453466
推荐阅读
- jquery - 服务器上的数据表加载资源失败:服务器响应状态为 500(内部服务器错误)
- docker - 在 Jupyter docker 中,无法连接到内核
- github - 使用 GitHub 存储库在 AWS 上创建管道
- reactjs - React input field onKeyPress problem of calling other function
- android - 无法将字符串从 Activity 传递到 Fragment
- javascript - 如何使用角度事件发射器修复模态切换
- assembly - 关于中断处理程序的问题
- python - 读取 CBOR 文件时出现 TypeError
- android - 说String是android SQlite中的数字类型是什么意思?
- r - 如何为随机效应模型生成这个 R 函数?