2 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
讓我們?cè)囋?cumsum()axis=1。那就是cumsum(1)。
df=df.join(df[['revenue']].cumsum(1).rename(columns=dict(revenue='Cumsum')))
publisher month_leadgen revenue Cumsum \
month_payment 2019-01 2019-02 2019-03 2019-01 2019-02
0 facebook 2019-01 60.0 25.0 45.0 60.0 85.0
1 google 2019-02 NaN 85.0 90.0 NaN 85.0
2 google 2019-03 NaN NaN 60.0 NaN NaN
month_payment 2019-03
0 130.0
1 175.0
2 60.0
或者,在樞軸階段進(jìn)行;
df2 = df=df.pivot_table(index=['month_leadgen','publisher'], columns=['month_payment'], values=['revenue']).cumsum(axis=1).reset_index()

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
只需以這種方式定義您的數(shù)據(jù)集,并將發(fā)布者作為索引:
df = pd.DataFrame( { 'month_leadgen': ['2019-01', '2019-01', '2019-01', '2019-02', '2019-02', '2019-03'], '月付款': ['2019-01', '2019-02', '2019-03', '2019-02', '2019-03', '2019-03'], '收入': [60, 25, 45, 85, 90, 60] }, 索引 = ['facebook', 'facebook', 'facebook', 'google', 'google', 'google'] )
然后執(zhí)行執(zhí)行這一行:
df['TotalShifted'] = df.groupby(level=0)['收入'].transform(lambda x: x.cumsum().shift(0))
您將獲得:
Month_leadgen Month_ payment 收入 TotalShifted facebook 2019-01 2019-01 60 60 facebook 2019-01 2019-02 25 85 facebook 2019-01 2019-03 45 130 google 2019-02 2019-02 85 85 google 2019-02 201 9-03 90 175 谷歌2019年3月 2019年3月 60 235
添加回答
舉報(bào)