如何在Python/Pandas中基于年月分组统计计数生成特征列
Pandas 实现人员月度记录数统计方案
前置依赖
需要提前确保已经安装pandas库,代码中首先导入依赖:
import pandas as pd
实现步骤
第一步:日期格式转换
先将原始DataFrame的date列转换为pandas的datetime类型,方便后续时间维度计算:# 假设原始数据存储在变量df中 df['date'] = pd.to_datetime(df['date'])第二步:生成年月标识列
按照要求的MM-YYYY格式生成年月维度字段:df['year_month'] = df['date'].dt.strftime('%m-%Y')第三步:分组统计并转换为宽表
按人员、年月分组统计记录数,再将年月转为列,无记录的月份填充为0:result = df.groupby(['Person', 'year_month'])['date'].count() \ .unstack(fill_value=0) \ .reset_index()
特殊场景适配:补全全量月份
如果需要覆盖完整的5个统计周期(哪怕某个月没有任何人员的记录,也要保留对应列),可以额外生成全量年月列表做列索引补全:
# 生成统计范围内所有的年月列表(按时间顺序排列) all_months = pd.date_range( start=df['date'].min(), end=df['date'].max(), freq='MS' # 按月初频率取数 ).strftime('%m-%Y').tolist() # 补全所有月份列 result = result.reindex(columns=['Person'] + all_months, fill_value=0)
内容的提问来源于stack exchange,提问作者stephsmith
相关产品推荐
相关产品推荐

