【发布时间】:2020-09-17 20:48:07
【问题描述】:
想象一下,我有一个像下面这样的数据框。我想创建一个新列 df['b'],其中包含一个特定方程,该方程采用 df['a'] 的最大值和最小值。方程应该是这样的:
import pandas as pd
df = pd.DataFrame({'a':[0.3, 0.1, 0.7, 0.5, 0.4, 0.3, 0.1, 0.6, 0.8, 0.2, 0.2],
'group':[1, 1, 3, 3, 5, 5, 3, 3, 6, 6, 1]})
equation = (df['a'] - df['a'].min()) / (df['a'].max() - df['a'].min())
虽然,这些最大值和最小值应该与 df['group'] 中的唯一值相关。因此,我们应该得到第 1、3、5 和 6 组的最大值和最小值,然后将方程应用于 df['a'] 的相关行。
我设法将这些值分开,但我不知道如何重现这个想法。
a_max = df.groupby('group')['a'].max()
a_min = df.groupby('group')['a'].min()
输出应如下所示:
a group b
0 0.3 1 1
1 0.1 1 0
2 0.7 3 1
3 0.5 3 0.67
4 0.4 5 1
5 0.3 5 0
6 0.1 3 0
7 0.6 3 0.6
8 0.8 6 1
9 0.2 6 0
10 0.2 1 0.5
【问题讨论】:
标签: python pandas group-by unique