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

如何在pandas中基于DataFrame数值列按规则创建条件新列

实现方案

下面提供两种高频使用的实现方式,均可直接满足需求:

方法1:使用pd.cut(最适配区间分组场景)

pd.cut是pandas专门用于数值区间分箱的工具,代码简洁、边界处理逻辑清晰:

import pandas as pd
import numpy as np

# 预处理步骤:如果A列的空白是字符串格式,先统一转为数值型空值
df['A'] = pd.to_numeric(df['A'], errors='coerce')

# 定义区间边界和对应返回值
bins = [-np.inf, 19, 49, np.inf]
labels = ["between 0 - 19", "between 20 to 49", "greater than 50"]

# 生成新列,空值/小于0的异常值自动返回空
df['new_column'] = pd.cut(
    df['A'],
    bins=bins,
    labels=labels,
    include_lowest=True
).mask(df['A'] < 0)

如果确认A列没有小于0的异常值,最后一行的.mask(df['A'] < 0)可以直接删除。

方法2:使用np.select(逻辑更直观,适合自定义多条件)

如果偏好显式写判定条件,可以用numpy的select方法,可读性更强:

import pandas as pd
import numpy as np

df['A'] = pd.to_numeric(df['A'], errors='coerce')

# 定义所有判定条件
conditions = [
    df['A'] >= 50,
    df['A'].between(20, 49),
    df['A'].between(0, 19)
]

# 定义条件对应的返回值
outputs = [
    "greater than 50",
    "between 20 to 49",
    "between 0 - 19"
]

# 所有条件不满足的场景默认返回空值
df['new_column'] = np.select(conditions, outputs, default=np.nan)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:54:03