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

Pandas中基于IF条件返回另一列值生成Total列的问题

问题原因

你编写的列表推导式中,满足条件时返回的是完整的Trans_amt列对象,而非当前行对应的单个数值,所以会导致Total列每一行都存储了整个Series,不符合预期。另外你代码里写的Trans_amt 列名尾部带多个空格,要确认和实际DataFrame的列名完全匹配,避免触发列不存在的报错。

解决方案
  • 方案1:用Pandas向量化函数np.where(推荐,数据量大时性能最优)
import numpy as np
# 先清理列名首尾空格(可选,避免列名带空格导致的调用错误)
df.columns = df.columns.str.strip()
df['Total'] = np.where(df['nb_months'] == 1, df['Trans_amt'], 0)
  • 方案2:用loc条件赋值
df.columns = df.columns.str.strip()
df['Total'] = 0
df.loc[df['nb_months'] == 1, 'Total'] = df['Trans_amt']
  • 方案3:修复原有列表推导式写法(仅适合小数据量场景,大表性能差)
df.columns = df.columns.str.strip()
df['Total'] = [row['Trans_amt'] if row['nb_months'] == 1 else 0 for _, row in df.iterrows()]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:54:07