2

私は次のものを持っていますDataFrame

from datetime import datetime
from pandas import DataFrame

df = DataFrame({
    'Buyer': ['Carl', 'Carl', 'Carl', 'Carl', 'Joe', 'Carl'],
    'Quantity': [18, 3, 5, 1, 9, 3],
    'Date': [
        datetime(2013, 9, 1, 13, 0),
        datetime(2013, 9, 1, 13, 5),
        datetime(2013, 10, 1, 20, 0),
        datetime(2013, 10, 3, 10, 0),
        datetime(2013, 12, 2, 12, 0),                                      
        datetime(2013, 9, 2, 14, 0),
    ]
})

まず、これに別の列を追加してDataFrame、各購入者の過去 5 日間の購入を合計することを検討しています。特に、結果は次のようになります。

        Quantity
Buyer   Date    
Carl    2013-09-01  21
        2013-09-02  24
        2013-10-01  5
        2013-10-03  6
Joe     2013-12-02  9

そのために、次のことから始めました。

df1 = (df.set_index(['Date', 'Buyer'])
         .unstack(level=[1])
         .resample('D', how='sum')
         .fillna(0))

ただし、この DataFrame に別の列を追加する方法がわかりません。これにより、行ごとに前の 5 行のエントリを合計できます。

2 番目:DataFrame (1) のように過去 5 日間の購入を合計するだけでなく、日付に基づいてこれらの購入を重み付けする 別の列をこれに追加します。例: 5 日前の購入は 20%、4 日前の購入は 40%、3 日前の購入は 60%、2 日前の購入は 80%、1 日前と今日の購入は 100% としてカウントされます。

4

0 に答える 0