

時間の経過とともに過去データに傾斜をかけたいのですが、どう書いていいのかわかりません。

具体的には  
・直近1年以内のデータは傾斜をかけない（× 1）  
・1年経過したデータは3か月ごとに×0.9ずつ傾斜をかける（13~15カ月前は×0.9、16~18カ月前は×0.9×0.9=0.81のようなイメージ）

添付のように、scoreの値をdateの日付をもとに傾斜を掛けた値を新しいカラムに出力したいです。

[補足]  
・元のカラムはscoreとdateのみです。scoreとdateからcoefを算出したいです  
・経過時間の粒度は日単位です

[![画像の説明をここに入力](https://i.stack.imgur.com/yETsj.png)](https://i.stack.imgur.com/yETsj.png)


CC BY-SA 4.0
2022-06-03T04:58:38.260
89207
2022-06-04T05:13:20.300
2022-06-03T17:42:56.600
42369
42369
question
python python3
時間とともに過去データに傾斜をかけたい


ちなみに質問の内容で`coef`を計算するなら`score`(スクリーンショットでは`socre`とtypoしていますが)は不要で`date`だけで出来ます。  
データが`'date_score.csv'`というファイルに入っている物として以下のようになるでしょう。

[code]

    import pandas as pd
    
    base_date = pd.Timestamp.today()
    ref_month = base_date.year * 12 + base_date.month - 1
    
    def CalcCoef(x):
        diff_month = ref_month - (x.year * 12 + x.month - 1)
        return 1 if diff_month < 13 else 0.9 ** int(((diff_month - 13) / 3) + 1)
    
    df = pd.read_csv('date_score.csv')
    
    df['coef'] = pd.to_datetime(df['date']).apply(CalcCoef)
    
    df.to_csv('coef_added.csv', index=False)
    
[/code]

なお`1`は`1.0`に、`0.729`は浮動小数点数の誤差で`0.7290000000000001`になります。


CC BY-SA 4.0
2022-06-04T05:13:20.300
89220
2022-06-04T05:13:20.300
26370
89207
answer