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

Pandas如何在指定行满足条件时对该行其余列执行exp指数运算

解决方案

首先需要导入numpy库用于指数运算,你原来的代码存在一个小笔误:定义的数据源变量是data_exp,创建DataFrame时错误写为data,修正后按以下逻辑实现即可:

推荐写法(向量化操作,效率更高)

import pandas as pd
import numpy as np

# 构造DataFrame
data_exp = [['no', 2,1.5,3], ['exp', 2,1.5,3], ['no', 2,1.5,5]]
df = pd.DataFrame(data_exp, columns = ['Type', 'V1','V2','V3'])

# 筛选Type为exp的行,对该行第2列及之后的所有列做指数运算
df.loc[df['Type'] == 'exp', df.columns[1:]] = np.exp(df.loc[df['Type'] == 'exp', df.columns[1:]])

# 如果需要和示例一样保留2位小数,增加以下代码
df.loc[:, df.columns[1:]] = df.loc[:, df.columns[1:]].round(2)

原循环写法的修正

你之前的循环不生效,是因为只计算了指数结果但没有赋值回原DataFrame的对应位置,修正后写法如下(仅做参考,更推荐上面的向量化写法):

for i in df.index:
    if df.loc[i, 'Type'] == 'exp':
        df.loc[i, df.columns[1:]] = np.exp(df.loc[i, df.columns[1:]]).round(2)

运行后得到的df数值和你给出的期望输出完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:15:10