python - groupby 后跟一个函数
问题描述
我有一个这样的数据框
name value
a expire
b active
a pending
c pending
a pending
d pending
d expire
我想要这样的回报
name rate
a 0.33
b 0
c 0
d 0.5
逻辑是按'name'分组,然后统计expire,并在名字组中使用expire/total number。例如,a 有一个过期,两个待处理,组中的总数为 3。因此,a 应该得到 1/3 = 0.33 的比率。
我用了groupby('name')['value'].value_counts()
无论如何我可以返回一个数据框吗?
解决方案
一种使用方式pandas.DataFrame.groupby.apply
:
df2 = df.groupby("name")["value"].apply(lambda x: x.eq("expire").sum()/len(x))
df2.reset_index()
输出:
name value
0 a 0.333333
1 b 0.000000
2 c 0.000000
3 d 0.500000
推荐阅读
- mysql - MySQL SELECT * 在 Unicode 上失败
- node.js - node.js 和 express 的区别
- python - 通过单击页面中的每个超链接来抓取网站
- r - 在 R 中满足另一个条件时(即当另一个变量是特定值时)需要帮助用 NA 替换值
- javascript - props.images.map 不是函数(函数组件)
- entity-framework - 在 EF Core 中的每条记录上自动设置创建和修改日期的问题
- java - Spring将实例化委托给另一个线程
- python - 如何将单行数据框连接到更大的数据框?当前获取“TypeError:预期的元组,得到str”
- c# - 如何通过使用按钮将学生对象添加到数组中?
- c# - 从 WPF MediaPlayer/DrawingVisual 绘制到 Windows 设备上下文 (hWnd/hDC) 或转换为 System.Drawing.Graphics