python - 如何在 groupby 之后在 lambda 中使用条件进行聚合
问题描述
之后groupby
,我想有条件,只agg
选择lambda
'product1_Gift0' == 1
但似乎无法得到答案
需要有关“保证金”计算的指导,而不是全部计算,仅在何时计算'product1_Gift0' equal '1'
data = [['john', 'A01', 0, 0.0],['john', 'A01', 1, 1.0],['john', 'A01', 1, 0.5],['jess', 'B01', 0, 0.0],['jess', 'B01', 0, 0.0],['jess', 'B01', 1, 0.8]]
df2 = pd.DataFrame(data, columns = ['member', 'orderID','product1_Gift0','margin'])
df3 = df2.groupby('member').agg({
'product1_Gift0': lambda x: sum(x)/len(x),
'margin' : lambda x: sum(x)/len(x),
})
actual_result = [['john', 'A01', 0.3333, 0.50],
['john', 'A01', 0.6667, 0.27]]
expected_result = [['john', 'A01', 0.3333, 0.75],
['john', 'A01', 0.6667, 0.80]]
谢谢
解决方案
试试这个:
>>> df2.groupby('member').apply(lambda x: pd.Series({"product_Gift0_mean": x.product1_Gift0.mean(), "margin_mean": sum(x.margin * (x.product1_Gift0==1))/(x.product1_Gift0==1).sum()}))
margin_mean product_Gift0_mean
member
jess 0.80 0.333333
john 0.75 0.666667
推荐阅读
- reactjs - React Konva 旋转/旋转动画
- c - 具有中断选项的功能的顺序执行
- typescript - 打字稿。定义函数对象的类型
- ruby - 无法使用没有 rails 的 mysql2 构建 gem 原生扩展
- github - 在 digitalocean droplet 这样的服务器上拥有私有 ssh 密钥以连接到 github 是否安全?
- html - 如果按钮被禁用,CSS 悬停
- python - 比较来自 python 的 Sikit-Learn 和来自 R 的 varSelRF
- javascript - Mongoose 在聚合时忽略空字段
- nginx - Nginx 无法在 Windows 中加载证书
- sql - T/SQL LDAP 查询以获取真实的 lastLoginTimestamp 值