Pandas DataFrame按条件计算新列rev的代码如何编写?
Pandas新增rev列实现代码
以下是几种不同场景的实现方案,按需选择即可:
方案1:numpy.where实现(最高效,优先推荐)
适合大数据量场景,运算速度最快:
import numpy as np # 条件满足返回两列乘积,不满足返回0 df['rev'] = np.where(df['item_cnt_day'] >= 0, df['item_cnt_day'] * df['item_price'], 0)
方案2:Pandas原生where实现(无额外依赖)
不想引入numpy依赖时使用:
# 先计算乘积,不符合条件的位置替换为0 df['rev'] = (df['item_cnt_day'] * df['item_price']).where(df['item_cnt_day'] >= 0, 0)
方案3:apply自定义函数实现(适合后续逻辑扩展)
小数据量、后续需要增加复杂判断逻辑时使用:
def calculate_rev(row): if row['item_cnt_day'] >= 0: return row['item_cnt_day'] * row['item_price'] return 0 df['rev'] = df.apply(calculate_rev, axis=1)
注意:执行前可通过df.dtypes确认item_cnt_day和item_price为数值类型,若为字符串类型需先转为int/float格式再执行计算。
内容的提问来源于stack exchange,提问作者karry d
相关产品推荐
相关产品推荐

