次の列を持つデータフレームがあります。
duration, cost, channel
2 180 TV1
1 200 TV2
2 300 TV3
1 nan TV1
2 nan TV2
2 nan TV3
2 nan TV1
1 40 TV2
1 nan TV3
一部のコスト値は nans であり、それらを埋めるには次のことを行う必要があります。
- チャネルごとにグループ化
- チャネル内で、使用可能なコストを合計し、発生回数 (平均) で割ります
- そのチャネル内のすべての行に値を再割り当てします。
- 期間 = 1 の場合、費用 = 平均 * 1.5
- 期間 = 2 の場合、費用 = 平均
例: TV2 チャネルには 3 つのエントリがあり、1 つのエントリのコストは null です。だから私は次のことをする必要があります:
average = 200+40/3 = 80
if duration = 1, cost = 80 * 1.5 = 120
duration, cost, channel
2 180 TV1
1 120 TV2
2 300 TV3
1 nan TV1
2 80 TV2
2 nan TV3
2 nan TV1
1 120 TV2
1 nan TV3
私は df.groupby('channel') を実行してから、各グループに関数を適用する必要があることを知っています。問題は、null 値だけでなく、1 つのコストが null の場合、グループ内のすべてのコスト値を変更する必要があることです。
どんなヒントでも助けていただければ幸いです。
ありがとう!