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

构建Pandas函数:通过三列二元分类结果生成预测列

实现Pandas数据框的串行二元分类生成预测列

针对你需要的这个串行判断逻辑,我推荐两种高效的实现方式,分别适配不同的数据规模场景:

方法一:向量化操作(推荐大数据集)

使用numpy.select()来实现,这是向量化操作,比逐行遍历快得多,非常适合处理大型数据框:

import pandas as pd
import numpy as np

# 先构造一个示例数据框(你可以替换成自己的真实数据)
sample_data = {
    'Versicolor': ['1', '0', '0', '1', '0', '0'],
    'Virginica': ['0', '1', '0', '0', '1', '0']
}
df = pd.DataFrame(sample_data)

# 定义判断条件和对应的预测值
conditions = [
    # 第一个判断:Versicolor为'1'时返回versicolor
    df['Versicolor'] == '1',
    # 第二个判断:Versicolor为'0'且Virginica为'1'时返回virginica
    (df['Versicolor'] == '0') & (df['Virginica'] == '1')
]
prediction_values = ['versicolor', 'virginica']

# 生成Predictions列,所有不满足上述条件的情况默认返回setosa
df['Predictions'] = np.select(conditions, prediction_values, default='setosa')

注意事项

如果你的Versicolor和Virginica列存储的是数值型的0/1(不是字符串),记得把条件里的'1'和'0'改成1和0,比如df['Versicolor'] == 1。

方法二:逐行遍历(适合小数据集)

如果你的数据规模不大,用df.apply()写一个自定义函数会更直观,逻辑一目了然:

import pandas as pd

# 自定义判断函数
def generate_prediction(row):
    if row['Versicolor'] == '1':
        return 'versicolor'
    elif row['Virginica'] == '1':
        return 'virginica'
    else:
        return 'setosa'

# 生成Predictions列
df['Predictions'] = df.apply(generate_prediction, axis=1)

这个方法的优点是逻辑清晰,容易修改,但因为是逐行处理,数据量很大时效率会比向量化操作低不少。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:06:52