【问题标题】:Vectorize Function over Groups组上的矢量化函数
【发布时间】:2019-01-04 13:11:10
【问题描述】:

我有一些属于不同组 (G) 的值 (X)。我希望 (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

【问题讨论】:

    标签: pandas grouping


    【解决方案1】:

    你可以使用transform

    df['N'] = df['X']/df.groupby('G')['X'].transform('max')
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      df['N']  = df.groupby('G')['X'].apply(lambda x: x / x.max())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-06
        • 1970-01-01
        • 2019-04-15
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多