如何在pandas DataFrame的groupby分组上应用softmax函数
实现方案
直接使用pandas的groupby + transform组合即可完成分组内的softmax计算,transform会返回和原数据集行数完全匹配的计算结果,可直接赋值为新列。
完整代码示例
import pandas as pd from scipy.special import softmax # 构造示例DataFrame d = { 'EventNo': ['10','10','12','12','12'], 'Name': ['Joe','Jack','John','James','Jim'], 'Rating':[30,32,2.5,3,4], } df = pd.DataFrame(data=d) # 分组计算softmax,新增Probabilities列,保留4位小数 df['Probabilities'] = df.groupby('EventNo')['Rating'].transform(softmax).round(4) print(df)
输出结果
EventNo Name Rating Probabilities 0 10 Joe 30.0 0.1192 1 10 Jack 32.0 0.8808 2 12 John 2.5 0.1402 3 12 James 3.0 0.2312 4 12 Jim 4.0 0.6285
和你期望的结果完全匹配,微小的尾数差异为浮点数计算正常精度误差。
内容的提问来源于stack exchange,提问作者SOK
相关产品推荐
相关产品推荐

