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

如何根据Spawners与Recruits列的数值条件创建Class分类列?

生成Class列的解决方案

根据你给出的规则,下面提供几种常用工具的实现方法:

Excel 解法

直接在Class列的第一个单元格(比如C2)输入嵌套IF公式,下拉填充即可:

=IF(AND(A2<>0,B2<>0),"Both",IF(A2<>0,"Spawners","Recruits"))

逻辑说明:

  • 先判断Spawners和Recruits是否都不为0,是则返回Both
  • 否则判断Spawners是否非零,是则返回Spawners
  • 剩下的情况就是Recruits非零,返回Recruits

Python Pandas 解法

高效向量式写法(推荐)

import pandas as pd
import numpy as np

# 假设你的数据存储在DataFrame中
df = pd.DataFrame({
    'Spawners': [85.640176, 0, 275.391055],
    'Recruits': [0, 38.30213, 22.031284]
})

# 生成Class列
df['Class'] = np.where(
    (df['Spawners'] != 0) & (df['Recruits'] != 0),
    'Both',
    np.where(df['Spawners'] != 0, 'Spawners', 'Recruits')
)

print(df)

逐行判断写法(适合新手理解)

import pandas as pd

df = pd.DataFrame({
    'Spawners': [85.640176, 0, 275.391055],
    'Recruits': [0, 38.30213, 22.031284]
})

def get_class(row):
    if row['Spawners'] != 0 and row['Recruits'] != 0:
        return 'Both'
    elif row['Spawners'] != 0:
        return 'Spawners'
    else:
        return 'Recruits'

df['Class'] = df.apply(get_class, axis=1)

R 解法

使用dplyr包的case_when函数实现:

library(dplyr)

# 构造示例数据
df <- data.frame(
    Spawners = c(85.640176, 0, 275.391055),
    Recruits = c(0, 38.30213, 22.031284)
)

# 生成Class列
df <- df %>%
    mutate(Class = case_when(
        Spawners != 0 & Recruits != 0 ~ "Both",
        Spawners != 0 ~ "Spawners",
        TRUE ~ "Recruits"
    ))

print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:30:55