私は次のものを持っています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% としてカウントされます。