我有这张 table
uname sid usage
0 Ahmad a 5
1 Ahmad a 7
2 Ahmad a 10
3 Ahmad b 2
4 Mohamad c 6
5 Mohamad c 7
6 Mohamad c 9
我想按 uname 和 side 进行分组,并且使用列 = group.max
- group.min
。但如果组数为 1
,则返回组 max
输出应该是
uname sid usage
0 Ahmad a 5
1 Ahmad b 2
2 Mohamad c 3
最佳答案
首先,使用 agg
获取每个组的 min
、max
和 size
。
然后将 min
乘以 size > 1
。如果是,则等于 min
,否则等于 0
。然后从 max
中减去该值。
d1 = df.groupby(['uname', 'sid']).usage.agg(['min', 'max', 'size'])
d1['max'].sub(d1['min'].mul(d1['size'].gt(1))).reset_index(name='usage')
关于Python Pandas 按函数分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39371325/