У меня есть следующий фрейм данных:
df = pd.DataFrame([[1, 2, True], [1, 4, False], [2, 6, False], [2, 8, True]], columns=["Group", "Value", "C"])
Group Value C
0 1 2 True
1 1 4 False
2 2 6 False
3 2 8 True
И я бы хотел, чтобы каждая группа знала сумму значений, где C равно true, по всей сумме значений. Так, например, для группы 1 у нас есть 2 / (2 + 4)
Мне удалось с помощью обширного поиска достичь следующего этапа:
df.groupby('Group').agg(lambda x: x.loc[x.C == True, 'Value'].sum() / x.Value.sum())
Value C
Group
1 0.333333 0.333333
2 0.571429 0.571429
Но (как и ожидалось) я получаюдве колонки, и я хотел бы получить только одну. Мой идеальный результат был бы:
Ratio
Group
1 0.333333
2 0.571429
Я, конечно, могу сделать некоторые изменения после группового и получить то, что я хочу, но, поскольку я новичок в Python, мне было интересно, если я здесь что-то упускаю.