【问题标题】:How to calculate incremental spend between two groups in a datafarme for a certain time period如何计算特定时间段内数据框中两组之间的增量支出
【发布时间】:2017-10-31 13:34:42
【问题描述】:

我有一个包含以下信息的大数据框,其中 day 列以 dd/mm/yy 格式显示日期。比如如下,

   UserID     group       day  sp       PU          new
0     213      test   6/10/14   4  $628.14     test-Red
1     314   control   6/10/14  15   $29.98      control
2     354      test  13/10/14   4  $554.58  test-NonRed
3    2131     test1  13/10/14   2   $60.41     test-Red
4     314  control1  13/10/14   1    $8.71      control
5     354     test1  20/10/14   1  $165.63  test-NonRed

我需要计算总测试组(测试红色和测试非红色)与对照组在 6 周内的增量支出。我需要以绝对 $ 或 % 显示结果。 我尝试过的,

df.groupby(by=['PU','day']).sum().groupby(level=[0]).cumsum()

这给了我每个组的绝对总和,但是 例外的答案是这样的,每个组也有 %

Control             $# 
Test - NonRed       $# 
Test - Red          $#
Total Result        $#

任何帮助都会很棒

【问题讨论】:

  • 试过pd.Series.cumsum?
  • 为什么你把这个标记为r
  • r 或 python 中的任何解决方案都对我有好处,
  • 你的预期输出是多少
  • 我的预期输出是总测试组与对照组相比在 3 周的绝对 $ 或 % 的增量支出,如虚拟数据框所述。

标签: python r pandas numpy data-analysis


【解决方案1】:

您只需几个步骤即可到达那里

df.PU=df.PU.str[1:].astype(float)
df.day=pd.to_datetime(df.day)
new1=pd.pivot_table(df,index='new',columns='day',values='PU',aggfunc=sum,fill_value=0,margins=True)
new1=new1.drop('All',1)
new1.cumsum(1)
Out[263]: 
day          2014-06-10 00:00:00  2014-10-13 00:00:00  2014-10-20 00:00:00
new                                                                       
control                    29.98                38.69                38.69
test-NonRed                 0.00               554.58               720.21
test-Red                  628.14               688.55               688.55
All                       658.12              1281.82              1447.45

【讨论】:

  • 感谢您的结果,但我需要绝对数字的 % 和 sum,我在 groupby 中尝试过,In_spend.groupby(by=['PU','day']).sum( ).groupby(level=[0]).cumsum(),它给了我绝对数字,但是我的解决方案没有每个组的总和
  • @user1017373 将 aggfunc 更改为 pct_change
  • 谢谢,抱歉,我的主要问题有一个小修改,即每个组的增量支出,即测试(红色测试和非红色测试)与对照
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 1970-01-01
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 2021-02-04
相关资源
最近更新 更多