我有一个包含以下信息的大数据框,列日显示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
我需要计算总测试组(test-Red和test-NonRed)与对照组相比6周内的增量支出。我需要以绝对$或%显示结果。 我试过的,
df.groupby(by=['PU','day']).sum().groupby(level=[0]).cumsum()
这给了我每组的组的绝对总和,但是 例外答案是这样的,每个组也有%
Control $#
Test - NonRed $#
Test - Red $#
Total Result $#
任何帮助都会很棒
答案 0 :(得分: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