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

如何在pandas多项式拟合时排除log_norm列指定行的数值

问题解答

完全可以在拟合阶段排除指定行,只需要在传入np.polyfit时过滤掉对应行的数据即可,以下是两种常用实现方案:

方法1:基于索引删除指定行(适配默认整数索引场景)

如果你的数据框是默认从0开始的连续整数索引,直接删除对应索引行后拟合即可:

# 拟合阶段仅使用排除0、1、6索引后的数据
fit_data = df1.drop(index=[0, 1, 6])
d = np.polyfit(fit_data['S_B'], fit_data['log_norm'], 1)
f = np.poly1d(d)
# 预测阶段仍使用全量数据,和原有逻辑保持一致
df1['predicted'] = getExp(f(df1['S_B'])) * df1['Cl']

方法2:基于行位置过滤(适配自定义索引场景)

如果你的数据框使用自定义索引,要按物理行位置排除第0、1、6行,可以用位置索引生成过滤掩码:

# 生成过滤掩码,排除物理位置为0、1、6的行
exclude_pos = [0, 1, 6]
mask = ~df1.index.isin(df1.iloc[exclude_pos].index)
fit_x = df1.loc[mask, 'S_B']
fit_y = df1.loc[mask, 'log_norm']
d = np.polyfit(fit_x, fit_y, 1)
f = np.poly1d(d)
df1['predicted'] = getExp(f(df1['S_B'])) * df1['Cl']

可选优化

你自定义的getExp函数仅支持单个数值计算,传入numpy数组时会报错,可直接使用numpy内置的向量化指数函数替换,性能更高且适配数组输入:

# 替换原有getExp调用
df1['predicted'] = np.exp(f(df1['S_B'])) * df1['Cl']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:15:02