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

如何在Pandas中拆分日期列并对日段进行分组?

解决Pandas日期拆分与日分组的实现方法

没问题,我来一步步帮你搞定这个日期特征工程的需求,这在回归分析里是很常见的操作~

第一步:将字符串日期转为Datetime类型

首先得把你格式为"1/31/2010"的字符串日期转换成Pandas的datetime类型,这样才能方便提取年、月、日信息。代码如下:

import pandas as pd

# 假设你的数据框是df,日期列名为'date_col'
df['date_col'] = pd.to_datetime(df['date_col'], format='%m/%d/%Y')
  • 这里的format='%m/%d/%Y'是关键,对应你的日期格式月/日/年,如果格式不匹配会报错;
  • 如果存在无效日期,可以加上errors='coerce'参数,把无效值转为NaT(缺失日期),方便后续处理:pd.to_datetime(df['date_col'], format='%m/%d/%Y', errors='coerce')

第二步:拆分年、月、日为独立列

转换为datetime类型后,就可以用.dt属性直接提取年、月、日:

# 提取年
df['year'] = df['date_col'].dt.year
# 提取月
df['month'] = df['date_col'].dt.month
# 提取日
df['day'] = df['date_col'].dt.day

第三步:将日分为1-10、11-20、21-31三个组别

这里有两种常用方法,你可以选自己习惯的:

方法1:用pd.cut()快速分组

这是最简洁的方式,直接指定区间和对应标签:

# 定义分组区间和标签
bins = [0, 10, 20, 31]
labels = ['1-10', '11-20', '21-31']

# 生成分组列
df['day_group'] = pd.cut(df['day'], bins=bins, labels=labels, include_lowest=True)
  • include_lowest=True是为了让第一个区间包含1(默认是左开右闭,加这个后变成左闭右闭,确保1被分到1-10组);
  • 如果需要生成数值型的分组标签(比如1、2、3),可以去掉labels参数,直接用pd.cut()返回的区间编码。

方法2:自定义函数+apply()

如果你需要更灵活的分组逻辑,可以写个自定义函数:

def get_day_group(day):
    if 1 <= day <=10:
        return '1-10'
    elif 11 <= day <=20:
        return '11-20'
    elif 21 <= day <=31:
        return '21-31'
    else:
        return None  # 处理异常值

df['day_group'] = df['day'].apply(get_day_group)

完整示例代码

为了让你更直观地看到效果,这里给一个完整的测试示例:

import pandas as pd

# 构造测试数据
data = {'date_col': ['1/5/2010', '1/15/2010', '1/25/2010', '2/8/2010', '3/22/2010']}
df = pd.DataFrame(data)

# 转换日期格式
df['date_col'] = pd.to_datetime(df['date_col'], format='%m/%d/%Y')

# 拆分年月日
df['year'] = df['date_col'].dt.year
df['month'] = df['date_col'].dt.month
df['day'] = df['date_col'].dt.day

# 日分组
bins = [0,10,20,31]
labels = ['1-10', '11-20', '21-31']
df['day_group'] = pd.cut(df['day'], bins=bins, labels=labels, include_lowest=True)

print(df)

运行后会输出包含所有新特征的数据框,直接可以用于线性回归分析啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:45:09