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

Python中对整数变量分类的正确方式?院校排名分组代码咨询

大学排名分组问题解答

原方法的合理性

你的这个自定义函数整体是合理的,能准确实现按排名区间分组的需求,但有几个小细节可以优化:

  • 拼写笔误:Unversity应该改成University
  • 逻辑运算符:Python里单个数值的逻辑判断用and比&更合适(&是位运算符号,虽然这里也能运行,但语义上and更清晰)
  • 效率问题:如果用df['ranking'].apply(create_category)处理大数据量的DataFrame,因为是逐行迭代,速度会比矢量化方法慢不少。

更高效的替代实现方式

1. 用pandas的cut函数(首推)

这是pandas专门为区间分箱设计的工具,矢量化处理效率极高,代码也更简洁:

import pandas as pd

# 定义分箱边界和对应的等级标签
bins = [0, 100, 200, 300, float('inf')]
tier_labels = [
    "First Tier Top University",
    "Second Tier Top University",
    "Third Tier Top University",
    "Other Top University"
]

# 直接生成分类列
df['tier'] = pd.cut(df['ranking'], bins=bins, labels=tier_labels, include_lowest=True)
  • include_lowest=True能确保排名1被包含在第一个区间里(因为cut默认是左开右闭,设置后第一个区间变为[0,100],包含两端边界)
  • 自动处理NaN值,会被标记为NaN,后续可以用df['tier'].fillna("Other Top University")统一处理。

2. 用numpy的select函数

适合多条件分支的矢量化处理,效率同样远高于逐行apply:

import numpy as np

# 定义条件列表和对应结果
conditions = [
    (df['ranking'] >= 1) & (df['ranking'] <= 100),
    (df['ranking'] >= 101) & (df['ranking'] <= 200),
    (df['ranking'] >= 201) & (df['ranking'] <= 300)
]
tier_choices = [
    "First Tier Top University",
    "Second Tier Top University",
    "Third Tier Top University"
]

# 生成分类列,不符合条件的默认归为其他
df['tier'] = np.select(conditions, tier_choices, default="Other Top University")

3. 优化原自定义函数

如果还是想用自定义函数的方式,可以优化细节:

def create_category(ranking):
    # 先处理非数值或空值的情况
    if pd.isna(ranking) or not isinstance(ranking, (int, float)):
        return "Other Top University"
    # Python支持连续区间判断,写法更简洁
    if 1 <= ranking <= 100:
        return "First Tier Top University"
    elif 101 <= ranking <= 200:
        return "Second Tier Top University"
    elif 201 <= ranking <= 300:
        return "Third Tier Top University"
    return "Other Top University"

# 应用到DataFrame
df['tier'] = df['ranking'].apply(create_category)
  • 增加了对非数值和空值的处理,避免报错
  • 简化了区间判断的写法(Python允许a <= x <= b的连续判断)
  • 修正了拼写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:10:28