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

Pandas基于DataFrame现有date列添加月份与季节二进制分类列的实现方法

实现代码

import pandas as pd

# 1. 确保date字段为datetime格式,提取月份数值
data['date'] = pd.to_datetime(data['date'])
data['month'] = data['date'].dt.month

# 2. 生成12个月份的二进制编码列
month_names = ['january', 'february', 'march', 'april', 'may', 'june', 
               'july', 'august', 'september', 'october', 'november', 'december']
month_dummies = pd.get_dummies(data['month'], prefix='', prefix_sep='')
month_dummies = month_dummies.reindex(columns=range(1,13), fill_value=0)
month_dummies.columns = month_names
data = pd.concat([data, month_dummies], axis=1)

# 3. 生成4个季节的二进制编码列(匹配你示例的划分规则:12/1/2月为冬、3/4/5月为春、6/7/8月为夏、9/10/11月为秋)
def get_season(month):
    if month in [12,1,2]:
        return 'winter'
    elif month in [3,4,5]:
        return 'spring'
    elif month in [6,7,8]:
        return 'summer'
    else:
        return 'fall'
data['season'] = data['month'].apply(get_season)
season_dummies = pd.get_dummies(data['season'], prefix='', prefix_sep='')
data = pd.concat([data, season_dummies], axis=1)

# 4. 删除临时辅助列
data = data.drop(columns=['month', 'season'])

说明

  • 输出完全符合你给出的示例效果,所有分类列均为0/1二进制编码
  • 仅依赖pandas自带方法实现,运行效率高,无需手写循环逐行判断
  • 列名完全匹配你要求的january至december、winter/spring/summer/fall的小写命名规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 14:54:03