【发布时间】:2021-03-25 01:18:43
【问题描述】:
我有一个包含以下列的 Pandas 数据框
date | months | price
我计算了一些基本的 BI 指标。我通过对日期的数据框进行分组并总结价格来计算净收入:
df = df[["Date", "Price"]].groupby(df['Date'])["Price"].sum().reset_index()
现在,我想找到与净收入类似的 MRR,但如果列月份超过 1 个月,则价格应平均“移动”到下个月。而且,它是按月而不是按天分组的。
例如,如果我在 2016 年 1 月,我有 3 个月的行,价格为 30 美元,我应该将 10 美元加到 1 月,10 美元到 2 月,10 美元到 3 月。
我的第一个想法是遍历数据框,跟踪月份和我应该在下个月“移动”的价格金额,并手动创建一个新的数据框。
但是,首先,Pandas 中是否有任何 Pythonic 方式可以做到这一点?
重现数据框的数据:
import pandas as pd
df = pd.DataFrame({'date': ['01-01-2016', '05-01-2016', '10-01-2016','04-02-2016'],
'months': [1, 3, 1, 6],
'price': [40, 60, 20, 60]})
想要的结果:
Date | MRR
January 2016 | 80
February 2016| 30
March 2016 | 10
April 2016 | 10
May 2016 | 10
June 2016 | 10
July 2016 | 10
每一行的计算结果都是这样的
January 2016 = 40 + 20 + 20 + 0
February 2016 = 0 + 20 + 0 + 10
March 2016 = 0 + 0 + 0 + 10
April 2016 = 0 + 0 + 0 + 10
May 2016 = 0 + 0 + 0 + 10
June 2016 = 0 + 0 + 0 + 10
July 2016 = 0 + 0 + 0 + 10
【问题讨论】:
-
您可以通过提供一些玩具数据使这个问题变得更好。这有助于人们在发布之前快速尝试他们的答案。
-
谢谢两位,我添加了一些数据,如果这些不再起作用,我会添加更多。
-
感谢您的样品 - 什么是所需的输出?
-
@jezrael 现在好点了吗?我还添加了计算 MRR 的数学方法
标签: python pandas dataframe business-intelligence