Pandas如何按date列日期计算value列平均值并扩展到全表
按日期列分组计算数值列平均值的解决方案
基于pandas实现该需求核心用到分组聚合方法groupby,具体实现逻辑如下:
基础实现(仅计算value列的日平均值)
按date列分组后,对value列执行平均值聚合即可,示例代码如下:
import pandas as pd # 构造示例数据集 data = { 'value': [10,13,14,5,9,11,5,18,40,5], 'date': ['2004-10-03']*5 + ['2004-11-03']*5 } df = pd.DataFrame(data) # 按date分组计算value的平均值 date_avg = df.groupby('date')['value'].mean() print(date_avg)
输出结果与预期一致:
date 2004-10-03 10.2 2004-11-03 15.8 Name: value, dtype: float64
扩展到整个DataFrame的实现
如果DataFrame包含多个需要计算日平均值的数值列,直接对整个分组后的对象执行mean()方法即可,会自动对所有支持数值运算的列计算分组平均值:
# 全列按日期分组计算平均值 all_col_avg = df.groupby('date').mean() print(all_col_avg)
如果需要保留原表的行结构,把平均值作为新列追加到原DataFrame中,可以搭配transform方法实现:
df['daily_value_avg'] = df.groupby('date')['value'].transform('mean')
内容的提问来源于stack exchange,提问作者Noz_Char
相关产品推荐
相关产品推荐

