Я застрял на этом, и подобные посты создают для меня что-то вроде черной дыры. Я все еще учусь ..
Я хотел бы взять среднее значение группы, которая удовлетворяет условию. Мои данные выглядят так:
user date Flag Value
0 ron 12/23/2016 'flag' 10
1 ron 12/21/2016 'n/a' 25
2 ron 12/23/2016 'flag' 10
3 ron 12/21/2016 'n/a' 3
4 andy 12/22/2016 'flag' 5
5 andy 12/22/2016 'flag' 1
Я бы хотел сгруппировать пользователя + Flag и создать новый столбец «Avg», который принимает только значения Avg «flag». Таким образом, данные будут выглядеть так:
user date Flag Value Avg
0 ron 12/23/2016 'flag' 10 10
1 ron 12/21/2016 'n/a' 25 10
2 ron 12/23/2016 'flag' 10 10
3 ron 12/21/2016 'n/a' 3 10
4 andy 12/22/2016 'flag' 5 3
5 andy 12/22/2016 'flag' 1 3
У меня есть что-то подобное, но я пробовал много разных вариантов:
groups = sample.groupby(['user','Flag'])
flag = sample.groupby(['user','Flag'])['Value'].transform('mean')
sample.loc[:,'Avg'] = np.select([flag.eq('flag'), groups.transform('mean')])
Руководство ценится ..