ybb*_*ybb 1 python group-by missing-data pandas
我有一个包含以下列的数据框:
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
Run Code Online (Sandbox Code Playgroud)
一些成本值是nans,为了填补它们,我需要执行以下操作:
示例: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
Run Code Online (Sandbox Code Playgroud)
我知道我应该做df.groupby('channel'),然后将函数应用于每个组.问题是我不仅需要修改空值,还需要修改组中的所有成本值,如果1 cost为null.
任何提示帮助将不胜感激.
谢谢!
如果我正确理解您的问题,您需要以下内容:
def myfunc(group):
# only modify cost if there are nan's
if len(group) != group.cost.count():
# set all cost values to the mean
group['cost'] = group.cost.sum() / len(group)
# multiply by 1.5 if the duration equals 1
group['cost'][group.duration == 1] = group['cost'] * 1.5
return group
df.groupby('channel').apply(myfunc)
duration cost channel
0 2 60 TV1
1 1 120 TV2
2 2 100 TV3
3 1 90 TV1
4 2 80 TV2
5 2 100 TV3
6 2 60 TV1
7 1 120 TV2
8 1 150 TV3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4997 次 |
| 最近记录: |