pandas DataFrame按年月统计每月处理量及累计和的实现方案
实现按年月统计处理量及累计总量的pandas解决方案
之前代码的问题在于index.month仅提取1-12的月份数字,会合并不同年份的同月份数据,改用年份+月份的组合维度分组即可实现需求,完整实现代码如下:
import pandas as pd # 1. 转换日期列格式 df['processed_date'] = pd.to_datetime(df['processed_date']) # 2. 生成年份+月份的组合字段,格式为'YYYY-MM' df['year_month'] = df['processed_date'].dt.strftime('%Y-%m') # 3. 按年月分组统计每月处理的条目数量 result = df.groupby('year_month', as_index=False)['id'].count().rename(columns={'id': 'nb_items_processed'}) # 4. 计算逐月累计处理总量 result['cum_sum'] = result['nb_items_processed'].cumsum() # ----------------可选补充步骤---------------- # 如果需要补全无数据的月份,保证生成连续的64条记录,可以添加以下代码 # 生成覆盖全部时间范围的连续年月序列 full_month_range = pd.date_range(start='2016-07-01', end='2021-11-30', freq='M').strftime('%Y-%m') # 重索引补全缺失月份,处理量填充为0 result = result.set_index('year_month').reindex(full_month_range, fill_value=0).reset_index() # 补全后重新计算累计值 result['cum_sum'] = result['nb_items_processed'].cumsum()
运行后得到的result即为符合要求的输出结构,包含nb_items_processed、cum_sum、year_month三列。
内容的提问来源于stack exchange,提问作者swiss_knight
相关产品推荐
相关产品推荐

