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

Pandas中无需新增列,对日期列应用函数分组的简洁方法?

解决方案

当然支持,不用新增列也能直接按年月分组统计,给你两种简洁的实现方式:

方法1:直接对datetime.date对象提取年月分组

既然你的Date列是datetime.date类型,可以直接在groupby()里用lambda函数提取年和月组成元组作为分组键,再用size()统计数量:

# 按(年,月)元组分组,统计条目数
counts = df.groupby(df['Date'].apply(lambda x: (x.year, x.month))).size()

如果想让分组索引更直观,也可以把年月拼成固定格式的字符串:

counts = df.groupby(df['Date'].apply(lambda x: f"{x.year}-{x.month:02d}")).size()

方法2:转成pandas datetime类型后用dt属性分组

pandas的datetime类型自带便捷的dt属性,能快速提取时间周期。你可以在groupby()里直接转换类型并按月份周期分组:

import pandas as pd

# 转成datetime后按年月周期分组,统计条目数
counts = df.groupby(pd.to_datetime(df['Date']).dt.to_period('M')).size()

这种方式的分组索引是Period类型(比如2023-10),可读性更强,后续做时间相关的筛选或排序也更方便。

以上两种方法都不会修改原DataFrame,完全符合你要的「无多余列」需求,和SQL里的GROUP BY逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:54:56