如何使用groupby聚合结果为Pandas DataFrame新增按type统计的前一日target均值列
解决方案
首先提前处理日期列,避免排序逻辑异常:
import pandas as pd # 确保date列为日期格式 df['date'] = pd.to_datetime(df['date'])
你已经计算出的按date、type分组的均值means可以按以下步骤处理,最终匹配到原DataFrame:
- 将多级索引的均值Series转为DataFrame,并按分组维度排序保证时间顺序正确
df_means = means.reset_index(name='curr_day_mean') df_means = df_means.sort_values(['type', 'date'])
- 按type分组,将当日均值向下偏移1行,得到对应type的前一日均值
df_means['prev_type_mean'] = df_means.groupby('type')['curr_day_mean'].shift(1)
- 将计算好的前一日均值合并回原DataFrame
df = df.merge( df_means[['date', 'type', 'prev_type_mean']], on=['date', 'type'], how='left' )
最终得到的prev_type_mean列就是你需要的结果,和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者Carlos Navarro Astiasarán
相关产品推荐
相关产品推荐

