python - Pandas :组内最大值和最小值之间的差异

标签 python pandas numpy

给定一个看起来像这样的数据框

GROUP VALUE
  1     5
  2     2
  1     10
  2     20
  1     7

我想计算每组中最大值和最小值之间的差异。也就是说,结果应该是

GROUP   DIFF
  1      5
  2      18

在 Pandas 中有什么简单的方法可以做到这一点?

对于具有大约 200 万行和 100 万组的数据框,在 Pandas 中执行此操作的快速方法是什么?

最佳答案

使用 @unutbu 的 df

每个时间
unutbu 的解决方案优于大型数据集

import pandas as pd
import numpy as np

df = pd.DataFrame({'GROUP': [1, 2, 1, 2, 1], 'VALUE': [5, 2, 10, 20, 7]})

df.groupby('GROUP')['VALUE'].agg(np.ptp)

GROUP
1     5
2    18
Name: VALUE, dtype: int64

np.ptp docs返回数组的范围


时机
df

enter image description here

df
df = pd.DataFrame(dict(GROUP=np.arange(1000000) % 100, VALUE=np.random.rand(1000000)))

enter image description here

df
很多组
df = pd.DataFrame(dict(GROUP=np.arange(1000000) % 10000, VALUE=np.random.rand(1000000)))

enter image description here

关于python - Pandas :组内最大值和最小值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40183800/

相关文章:

python - 动态创建图像缩略图(使用django)

python - 使用 pandas 比较两个数据帧以返回新数据帧 - Python

python - numpy: "array_like"对象的正式定义?

python - 如何交错放置 5 个 PyTorch 张量?

python - for 循环中的错误/异常处理 - python

python - 从日期选择器获取网站 x 个月的可用性

python - Pandas 将分组依据和行合并到列

python - 如何将某些列转换为单独的行,并为具有相同索引的不同行重复所有其他内容

python - 使用无效字符(重音符号)将 CSV 文件读入 Pandas Dataframe

python - 遍历 numpy 数组列的所有成对组合