按条件python设置pandas中组的值

2024-09-29 05:27:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下列的数据帧:

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

一些成本值是NaN,要填充它们,我需要执行以下操作:

  • 按频道分组
  • 在一个通道内,将可用成本相加,除以*次(平均值)
  • 为该通道中的所有行重新分配值:
    • 如果持续时间=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成本为空)。

任何提示帮助将不胜感激。

谢谢!


Tags: 数据示例channel条目nan频道平均值成本