python - 使用 Pandas 查找分组行的最小值

标签 python pandas numpy dataframe

这可能是一个微不足道的问题,但我仍在努力弄清楚 pandas/numpy。

所以,假设我有一个具有以下结构的表:

group_id | col1 | col2 | col3 |  "A"   |  "B"
   x     |   1  |   2  |  3   |  NaN   |   1
   x     |   3  |   2  |  3   |   1    |   1 
   x     |   4  |   2  |  3   |   2    |   1
   y     |   1  |   2  |  3   |  NaN   |   3 
   y     |   3  |   2  |  3   |   3    |   3 
   z     |   3  |   2  |  3   |   10   |   2
   z     |   2  |   2  |  3   |   6    |   2
   z     |   4  |   2  |  3   |   4    |   2
   z     |   4  |   2  |  3   |   2    |   2

请注意,有一个 group_id 用于对每一行中的元素进行分组。 所以一开始,我有列 group_id 和 col1-col3 的值。

然后对于每一行,如果 col1、col2 或 col3 的值 = 1,则“A”为 NaN,否则该值基于公式(与此处无关,因此我放置了一些数字)。

那个,我知道如何使用:

df["A"] = np.where(((df['col1'] == 1)|(df['col2']== 1) | (df['col3']) == 1))), NaN, value)

但对于“B”列,我需要为特定组填写 A 列中的最小值。

例如,对于组 X 的所有行,“B”等于“1”,因为所有组“x”行的 A 列中的最小值都等于 1。

类似地,对于“y”组中的行,最小值为 3,对于“z”组,最小值为 2。我如何使用 pandas 准确地做到这一点...?这让我更加困惑,因为特定组的行数可能大小不一。

如果它们的大小都相同,我可以说用预设范围内的最小值填充它。

我希望这是有道理的;如果我应该提供更清晰的示例或澄清任何内容,请告诉我!

最佳答案

要获得每个组的 A 列的最小值,请使用 transform

df.groupby('group_id')['A'].transform('min')

关于python - 使用 Pandas 查找分组行的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41450963/

相关文章:

python - XML 中的错误编码符号

python - 如何根据Python中另一个 tkinter `Scale` 小部件的值来控制 tkinter `Scale` 小部件的值?

python - 使用 pandas 或 matplotlib 在 IPython 笔记本中绘制性别图表

python - Lorentzian scipy.optimize.leastsq 适合数据失败

arrays - 两个一维 numpy/torch 数组的特殊索引以生成另一个数组

python - 从 boost::python::object 列表中获取单个元素,用于 python 例程

python - .join() 方法到底是做什么的?

python - 如何将 JSON 时间序列与具有相同列名的 pandas 一起使用

python - Pandas 将列转换为行

python - 可能的 numpy 值格式字符串有哪些?