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

如何基于日期范围创建季节新列?新手求教for loop实现方法

基于日期范围创建seasons列的实现方法

嘿,我来帮你搞定这个需求!想用for loop实现完全没问题,不过先帮你理清楚具体步骤,同时也会分享更高效的替代方案(毕竟for loop在处理大数据集时效率偏低)。下面以Python的pandas库为例(这是处理这类数据最常用的工具),一步步来:

1. 先准备你的数据

假设你已经有一个包含日期列的DataFrame,首先要确保日期是datetime类型(否则没法提取月份判断季节),示例代码如下:

import pandas as pd

# 模拟你的数据
data = {
    'date': ['2023-01-15', '2023-04-20', '2023-07-10', '2023-10-05', '2023-12-25']
}
df = pd.DataFrame(data)
# 把字符串日期转为datetime类型,这一步是核心前提
df['date'] = pd.to_datetime(df['date'])

2. 用for loop实现季节判断

先明确季节对应的月份范围(这里以北半球为例),然后遍历每一行的日期,判断所属季节并赋值到新的seasons列:

# 初始化空的seasons列
df['seasons'] = ''

# 遍历DataFrame的每一行
for index, row in df.iterrows():
    # 提取当前日期的月份
    month = row['date'].month
    # 根据月份判断季节
    if 3 <= month <= 5:
        df.loc[index, 'seasons'] = 'Spring'
    elif 6 <= month <= 8:
        df.loc[index, 'seasons'] = 'Summer'
    elif 9 <= month <= 11:
        df.loc[index, 'seasons'] = 'Autumn'
    else:  # 12、1、2月归为冬季
        df.loc[index, 'seasons'] = 'Winter'

# 查看最终结果
print(df)

运行后你就能看到每个日期对应的季节已经被正确赋值啦!

3. 更高效的替代方案(强烈推荐)

如果你的数据集很大,iterrows()的for loop会很慢,推荐用批量处理的方法,速度能提升好几倍:

方法一:用pd.cut批量划分

# 定义月份区间和对应的季节标签
bins = [0, 2, 5, 8, 11, 12]
labels = ['Winter', 'Spring', 'Summer', 'Autumn', 'Winter']

# 直接批量赋值季节
df['seasons'] = pd.cut(df['date'].dt.month, bins=bins, labels=labels, include_lowest=True)

方法二:用numpy.where链式判断

import numpy as np

df['seasons'] = np.where(df['date'].dt.month.isin([3,4,5]), 'Spring',
                        np.where(df['date'].dt.month.isin([6,7,8]), 'Summer',
                                np.where(df['date'].dt.month.isin([9,10,11]), 'Autumn', 'Winter')))

这两种方法都能快速完成批量赋值,完全不用逐行遍历!如果你的季节划分是南半球的(比如春季9-11月),只需要调整月份对应的判断条件就可以啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:49:01