You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对pandas DataFrame中的数据执行expit变换

pandas对DataFrame执行expit变换的实现方案

expit函数也就是常说的sigmoid函数,你给出的计算公式exp(x)/(1+exp(x))和常用写法1/(1+exp(-x))数学上完全等价,计算结果一致,以下是两种可直接运行的实现方式:


方法1:手动按公式实现(无额外统计库依赖)

只需要pandas和numpy即可完成,适合不想额外装依赖的场景:

  1. 首先构造你的原始数据集
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Id': [1, 2],
    'B': [0, 2],
    'C': [-1, -2]
})
  1. 对需要变换的数值列应用公式计算,注意Id是标识列不需要参与变换,最后按示例保留3位小数即可匹配预期输出:
# 指定需要做expit变换的列
target_cols = ['B', 'C']
df[target_cols] = df[target_cols].apply(lambda x: np.exp(x) / (1 + np.exp(x))).round(3)

执行后打印df就能得到目标结果:

Id      B      C
0   1  0.500  0.269
1   2  0.881  0.119

方法2:调用scipy内置expit函数(数值稳定性更好)

如果你的数据集存在极大/极小的极端值,手动实现的公式可能出现数值溢出问题,scipy库内置了优化过的expit实现,计算稳定性更强:

import pandas as pd
from scipy.special import expit

df = pd.DataFrame({
    'Id': [1, 2],
    'B': [0, 2],
    'C': [-1, -2]
})

target_cols = ['B', 'C']
df[target_cols] = df[target_cols].apply(expit).round(3)

运行结果和手动计算完全一致,和你给出的预期输出匹配。

提示:如果不需要和示例一样保留3位小数,去掉代码末尾的.round(3)即可得到全精度的计算结果。


内容的提问来源于stack exchange,提问作者Nabih Bawazir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 23:21:24