【发布时间】:2020-02-25 15:37:18
【问题描述】:
我有以下数据框:
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
我当然可以在 groupby 之后进行一些修改并得到我想要的,但由于我是 Python 新手,我想知道我是否在这里遗漏了一些基本的东西。
【问题讨论】:
标签: python pandas pandas-groupby