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

Python pandas实现DataFrame逐行计算并写入Total列问题咨询

方法1:修改你现有循环逻辑实现写入

你现在的循环已经拿到了每行的索引index,直接通过索引定位赋值即可,修改后的代码如下:

import pandas as pd

df = pd.read_csv(mypath)
for index, row in df.iterrows():
    if row['Age'] < 2:
        total = row['Input'] * 1.2
    elif row['Age'] > 8:
        total = row['Input'] * 1.1
    else:
        total = row['Input'] * 0.9
    # 直接写入对应行的Total列
    df.loc[index, 'Total'] = total
# 验证结果
print(df)

注意这种iterrows循环的方式只适合小数据量场景,数据量超过1万行的时候性能会非常差。

方法2:更高效的向量化运算实现(推荐)

pandas原生支持向量化操作,不需要逐行循环就能完成计算,运行效率比循环高几十到上百倍,代码示例如下:

import pandas as pd
import numpy as np

df = pd.read_csv(mypath)
# 定义判断条件和对应的乘数
conditions = [
    df['Age'] < 2,
    df['Age'] > 8
]
multipliers = [1.2, 1.1]
# 计算Total列,不满足上面两个条件的默认乘0.9
df['Total'] = np.select(conditions, multipliers, default=0.9) * df['Input']
# 验证结果
print(df)

两种方法运行后你示例表格里的第一行Total都会得到90、第二行得到135的正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 04:06:11