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

如何在Python中对含年份列的DataFrame按指定规则分箱?

解决方法

这里提供三种实用的方法来实现年份分类,你可以根据需求选择:

方法1:使用pd.cut(适合区间划分场景)

pd.cut专门用于将连续数值划分为离散区间,非常适合这种年份区间分类的场景:

import pandas as pd

# 创建示例DataFrame
df = pd.DataFrame({'year': range(2010, 2024)})

# 定义区间边界和对应标签
bins = [2009, 2014, 2020, 2023]
labels = ['old', 'medium', 'new']

# 新增分类列
df['year_category'] = pd.cut(df['year'], bins=bins, labels=labels, include_lowest=True)

# 查看结果
print(df)
  • bins设置区间边界:2009(确保2010被包含)、2014、2020、2023
  • include_lowest=True保证左端点2010被划入第一个区间
  • 运行后会直接生成对应分类列

方法2:使用np.select(灵活多条件判断)

如果需要更灵活的条件定义,np.select可以按自定义条件匹配标签:

import pandas as pd
import numpy as np

df = pd.DataFrame({'year': range(2010, 2024)})

# 定义条件列表和对应标签列表
conditions = [
    df['year'].between(2010, 2014),
    df['year'].between(2015, 2020),
    df['year'].between(2021, 2023)
]
choices = ['old', 'medium', 'new']

df['year_category'] = np.select(conditions, choices)

print(df)
  • 每个条件对应一个区间,顺序和标签列表一一对应
  • 适合条件复杂或非连续区间的场景

方法3:自定义函数+apply(直观易懂)

如果喜欢更直观的逻辑写法,可以自定义函数后用apply处理:

import pandas as pd

df = pd.DataFrame({'year': range(2010, 2024)})

def categorize_year(year):
    if 2010 <= year <= 2014:
        return 'old'
    elif 2015 <= year <= 2020:
        return 'medium'
    elif 2021 <= year <= 2023:
        return 'new'

df['year_category'] = df['year'].apply(categorize_year)

print(df)
  • 逻辑清晰,容易理解和修改
  • 适合需要加入额外复杂判断的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:55:15