Python Pandas 按函数分组

标签 python pandas group-by max min

我有这张 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 获取每个组的 minmaxsize
然后将 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')

enter image description here

关于Python Pandas 按函数分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39371325/

相关文章:

python - 如何通过 Python 使用 sftp 和 mput?

python - 平滑 numpy/pandas 中的一系列加权值

python-3.x - 找到前三个相关类别及其对应的概率

python - 为什么 jsmin 在 python 子进程中运行时会提前退出?

javascript - 有趣的递归 lambda 示例

python - 从抽象类继承SQLAlchemy类时抛出异常: metaclass conflict: the metaclass of a derived class must be

python - 对两列应用操作返回 'None'

python - 如何从 pandas groupby().sum() 的输出创建新列?

python - 带有日期时间对象的 pandas Grouper 方法的奇怪行为

java - OpenJPA:如何构建具有组计数的 GROUP BY 查询