python - 在 groupby 之后在每个组中进行更改
问题描述
让我们有一个像
names = ['bob', 'alice', 'bob', 'bob', 'ali', 'alice', 'bob', 'ali', 'moji', 'ali', 'moji', 'ali', 'bob', 'bob', 'bob']
times = [21 , 34, 37, 40, 55, 65, 67, 84, 88, 90 , 91, 97, 104,105, 108]
df = pd.DataFrame({'name' : names , 'time_of_action' : times})
我们希望groupby
在name
每个组中考虑从 0 开始的时间。也就是说,在每个组中,我们希望从该组的所有时间中减去该组中的 min-time_of_action。我们如何用 pandas 系统地做到这一点?
解决方案
如果我是正确的,那么你想要这个:
df['new time'] = df['time_of_action']-df.groupby('name')['time_of_action'].transform('min')
东风:
name time_of_action new time
0 bob 21 0
1 alice 34 0
2 bob 37 16
3 bob 40 19
4 ali 55 0
5 alice 65 31
6 bob 67 46
7 ali 84 29
8 moji 88 0
9 ali 90 35
10 moji 91 3
11 ali 97 42
12 bob 104 83
13 bob 105 84
14 bob 108 87
推荐阅读
- tensorflow - 会话图为空,尽管图设置为默认值
- java - 方法 setSize(new Dimension(1024, 768)) 在 Selenium 中有什么作用?
- hibernate - Hibernate:如何在hibernate原生sql查询语言的where子句中动态添加属性
- primefaces - 如何知道用户是否关闭了消息组件 Primefaces
- r - 我可以使用 facet_wrap (ggplot2) 使 facet 比其他 facet 大吗?
- php - 我如何从多到多检索数据,以便在 laravel 上创建我的自定义 restful api?
- java - 比较 Java 中的两个 Hashmap
- mysql - 发行 MySQL 8.0 ODBC 8.0
- mysql - 存储过程中的临时表返回的值与常规查询不同
- reactjs - 我重复使用了我的 React Element 两次,第二次没有响应点击