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

如何在Pandas中依据指定双条件生成新列F

Pandas生成新列F的实现方法

原始数据

import pandas as pd

df = pd.DataFrame({
    'Ruote': ['R1', 'R2', 'R3'],
    'B': [115, 155, 155],
    'C': [1, 1, 6],
    'D': [150, 150, 150],
    'E': [-35, 5, 5]
})

目标效果(生成列F后)

Ruote   B   C   D    E   F
R1     115  1   150 -35  0
R2     155  1   150  5   1
R3     155  6   150  5   5

列F的生成规则

  • 当E <= 0时,F取值为0
  • 当E > 0时:
    • 若C <= E,F取C的值
    • 若C > E,F取E的值

实现方案

方案一:嵌套numpy.where(推荐,矢量化高效)

这是处理这类条件判断最常用的矢量化方法,性能最优,适合大数据集:

import numpy as np

df['F'] = np.where(df['E'] <= 0, 0, np.where(df['C'] <= df['E'], df['C'], df['E']))

方案二:行级apply函数(小数据集适用)

如果数据量不大,行级处理逻辑更直观:

def get_F_value(row):
    if row['E'] <= 0:
        return 0
    return row['C'] if row['C'] <= row['E'] else row['E']

df['F'] = df.apply(get_F_value, axis=1)

方案三:mask+where组合写法

用Pandas的Series方法链式处理,逻辑清晰:

df['F'] = df['C'].where(df['C'] <= df['E'], df['E']).mask(df['E'] <= 0, 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:01:18