我有一个包含以下列的数据框:
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 个条目,其中一个条目的成本为零。所以我需要做以下事情:
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') 然后将函数应用于每个组。问题是我不仅需要修改空值,如果 1 成本为空,我还需要修改组内的所有成本值。
任何提示帮助将不胜感激。
谢谢!