熊猫:组内最大值和最小值之间的差异

新手上路,请多包涵

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

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

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

GROUP   DIFF
  1      5
  2      18

在 Pandas 中执行此操作的简单方法是什么?

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

原文由 David 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 360
1 个回答

使用@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 文档 返回数组的范围


定时

df

在此处输入图像描述

df

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

在此处输入图像描述

df

许多团体

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

在此处输入图像描述

原文由 piRSquared 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题