Python如何快速按阈值规则判断DataFrame每行值并生成新列
实现方案
你可以用以下几种高效的方案快速实现需求,不需要写循环遍历每一行:
方案1:使用np.where(最简洁,性能最优)
这是最常用的向量化判断方案,适合任意数据量的场景:
import numpy as np # 一行完成赋值:满足value < -5则赋值-5,否则赋值0 df['new_value'] = np.where(df['value'] < -5, -5, 0)
方案2:使用loc显式赋值(可读性最高)
如果你希望逻辑更直观,方便后续调整规则,可以用分步骤赋值的方式:
# 先给所有行默认赋值0 df['new_value'] = 0 # 再筛选出value小于-5的行,将对应new_value改为-5 df.loc[df['value'] < -5, 'new_value'] = -5
完整测试代码
你可以直接运行以下代码验证输出和你给出的预期结果一致:
import pandas as pd import numpy as np # 构造你提供的样例数据 df = pd.DataFrame({ 'value': [-2.26, -5.70, -2.14, -2.30, -2.22, -4.86, -5.07, -3.86, -3.26] }) # 执行赋值逻辑 df['new_value'] = np.where(df['value'] < -5, -5, 0) # 输出结果 print(df)
运行输出:
value new_value 0 -2.26 0 1 -5.70 -5 2 -2.14 0 3 -2.30 0 4 -2.22 0 5 -4.86 0 6 -5.07 -5 7 -3.86 0 8 -3.26 0
内容的提问来源于stack exchange,提问作者sirimiri
相关产品推荐
相关产品推荐

