亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算結轉效應

計算結轉效應

陪伴而非守候 2022-01-18 15:34:21
我想計算電視廣告 GRP 數據的結轉效應。我的輸入數據如下所示:      Variable       Date  Causal  Half_Life0     TV Model 2016-01-10       0          41     TV Model 2016-01-17       0          42     TV Model 2016-01-24       0          43     TV Model 2016-01-31     100          44     TV Model 2016-02-07     110          45     TV Model 2016-02-14      89          46     TV Model 2016-02-21      57          47     TV Model 2016-02-28      90          48   TV General 2016-01-10       0          49   TV General 2016-01-17       0          410  TV General 2016-01-24       0          411  TV General 2016-01-31      30          412  TV General 2016-02-07      32          413  TV General 2016-02-14      42          414  TV General 2016-02-21      39          415  TV General 2016-02-28      55          4我想根據以下條件計算一個新列 df['Adstock']:如果列 df.Variable 中組的第一行,則 df.Adstock = df.Causal 如果不是組中的第一行,則 df. Adstock = df.Causal + 0.5**(1/df.Half_life)*df.Adstock 來自上一行。我正在使用以下代碼:import pandas as pdimport numpy as npimport numpy.random as randomimport statsmodels.api as smimport statsmodels.tsa as tsaimport statsmodels.formula.api as smfimport datetimedf = pd.read_excel('RC Data.xlsx')df['Adstock'] = 0df['Adstock'] = np.where(df['Variable'] == df['Variable'].shift(1), df['Adstock'].shift(1)*(0.5**(1/df['Half_Life'])) + df['Causal'], df['Causal'])我得到的輸出如下:      Variable       Date  Causal  Half_Life  Adstock0     TV Model 2016-01-10       0          4      0.01     TV Model 2016-01-17       0          4      0.02     TV Model 2016-01-24       0          4      0.03     TV Model 2016-01-31     100          4    100.04     TV Model 2016-02-07     110          4    110.05     TV Model 2016-02-14      89          4     89.06     TV Model 2016-02-21      57          4     57.07     TV Model 2016-02-28      90          4     90.08   TV General 2016-01-10       0          4      0.09   TV General 2016-01-17       0          4      0.010  TV General 2016-01-24       0          4      0.0
查看完整描述

1 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

這是我的解決方案,我認為很難將其矢量化


l=[]

for x , y in df.groupby('Variable',sort=False):

    #print(y)

    l1=[]

    for s,t in y.iterrows():

        if len(l1)==0:

            l1.append(t['Causal'])

        else:

            l1.append(t['Causal'] + 0.5**(1/t['Half_Life'])*l1[-1])

    l.extend(l1)

df['New']=l

df

Out[982]: 

     Variable        Date  Causal  Half_Life         New

0     TVModel  2016-01-10       0          4    0.000000

1     TVModel  2016-01-17       0          4    0.000000

2     TVModel  2016-01-24       0          4    0.000000

3     TVModel  2016-01-31     100          4  100.000000

4     TVModel  2016-02-07     110          4  194.089642

5     TVModel  2016-02-14      89          4  252.209284

6     TVModel  2016-02-21      57          4  269.081883

7     TVModel  2016-02-28      90          4  316.269991

8   TVGeneral  2016-01-10       0          4    0.000000

9   TVGeneral  2016-01-17       0          4    0.000000

10  TVGeneral  2016-01-24       0          4    0.000000

11  TVGeneral  2016-01-31      30          4   30.000000

12  TVGeneral  2016-02-07      32          4   57.226892

13  TVGeneral  2016-02-14      42          4   90.121889

14  TVGeneral  2016-02-21      39          4  114.783173

15  TVGeneral  2016-02-28      55          4  151.520759


查看完整回答
反對 回復 2022-01-18
  • 1 回答
  • 0 關注
  • 318 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號