pandas聚合操作如何添加未参与聚合的列并重命名结果列
解决方案
你可以通过把currency加入分组维度,同时用agg方法指定聚合列名的方式解决两个问题,参考代码如下:
# 转换日期格式 price_history['date'] = pd.to_datetime(price_history['date']) # 分组聚合生成目标结构 result = price_history.groupby( # 同时按币种、年月两个维度分组 ['currency', price_history['date'].dt.strftime('%Y-%B')] )['close'].agg( # 给聚合后的收盘价均值指定列名,可按需修改名称 monthly_close_avg='mean' ).reset_index() # 将分组索引转为普通DataFrame列
代码说明:
- 把
currency加入groupby的分组键,聚合后会自动保留该列,符合多币种月度统计的业务逻辑 agg(monthly_close_avg='mean')的写法可以直接自定义聚合结果的列名,后续关联其他数据集时可以直接用该列名取值- 末尾的
reset_index()会把分组用的currency和年月两个索引都转为普通列,最终输出的result就是包含currency、date(即你需要的年月格式值)、monthly_close_avg三列的标准DataFrame
如果想要避免和原始日期列重名,还可以在reset_index()后添加重命名操作,比如:
result = result.rename(columns={'date': 'year_month'})
内容的提问来源于stack exchange,提问作者Lostsoul
相关产品推荐
相关产品推荐

