我有一些值(X),它们属于各个组(G)。我希望(N)将每个值除以组中的最大值,如下表所示:
我尝试过:
df = pd.DataFrame({'X': [0.2, 0.3, 0.4, 0.5, 0.6, 0.7],
'G': [1, 1, 1, 2, 2, 2 ]})
def fun (X):
Norm = 1 / max(X)
return X * Norm
f = np.vectorize(fun, otypes=[float])
df['N'] = f(df['X']).groupby('G')
但这给出了:
TypeError: 'float' object is not iterable
答案 0 :(得分:2)
您可以使用transform
:
df['N'] = df['X']/df.groupby('G')['X'].transform('max')
答案 1 :(得分:1)
您可以这样做:
df['N'] = df.groupby('G')['X'].apply(lambda x: x / x.max())