python - Pandas Groupby Ratio怎么做?
问题描述
我有以下数据框。
product Dates Times Sale
level_1
0 ACN 2020-12-23 09:15:00 25
1 ACN 2020-12-23 09:20:00 30
2 ACN 2020-12-24 09:15:00 50
3 ACN 2020-12-24 09:20:00 45
0 ACN2 2020-12-23 09:15:00 80
1 ACN2 2020-12-23 09:20:00 55
2 ACN2 2020-12-24 09:15:00 20
3 ACN2 2020-12-24 09:20:00 110
我想要所有产品在同一时间与前一天的产品销售比率。
ACN
12 月 24 日 9 点 15 分对产品说
销售比率 = 50/25=2(这里 25 是前一天的同一时间)
我想要的是这个。
product Dates Times Sale Sale_ratio
level_1
0 ACN 2020-12-23 09:15:00 25 Nan
1 ACN 2020-12-23 09:20:00 30 Nan
2 ACN 2020-12-24 09:15:00 50 2
3 ACN 2020-12-24 09:20:00 45 1.5
0 ACN2 2020-12-23 09:15:00 80 Nan
1 ACN2 2020-12-23 09:20:00 55 Nan
2 ACN2 2020-12-24 09:15:00 20 0.25
3 ACN2 2020-12-24 09:20:00 110 2
解决方案
让我们试试 groupby,变换 row/rwo.shift()
df['Sale_ratio']=df.groupby(['product','Times'])['Sale'].transform(lambda x: x/(x.shift()))
product Dates Times Sale Sale_ratio
level_1
0 ACN 2020-12-23 09:15:00 25 NaN
1 ACN 2020-12-23 09:20:00 30 NaN
2 ACN 2020-12-24 09:15:00 50 2.00
3 ACN 2020-12-24 09:20:00 45 1.50
0 ACN2 2020-12-23 09:15:00 80 NaN
1 ACN2 2020-12-23 09:20:00 55 NaN
2 ACN2 2020-12-24 09:15:00 20 0.25
3 ACN2 2020-12-24 09:20:00 110 2.00
推荐阅读
- python-3.x - SPACY NLP中如何进行语料库预处理、词形还原和向量化?
- javascript - React - Babel Polyfill 出于某种原因不会阻止 Set 或 Weakmap 上的异常,但会填充 Promise
- oracle - 授予对表的 SELECT 权限,而用户无需在 select 上限定所有者
- c# - 水下效果在 Unity 上无法运行,会是什么?
- node.js - MongoDB 对象的 View Count 不会增加
- smalltalk - 将 SmallInteger 子类化以表示数字事物?
- ruby-on-rails - 使用嵌入的 Rails 显示带有 ajax 的 html
- arrays - 如何使用 openpyxl 将复杂的 numpy 数组写入 excel
- python - 从不同结构的字典列表创建火花数据框
- ios - CFRunloopRun() 和简单的无限循环之间的区别?